{
  "version": 2,
  "contractRevision": "9c7f26749e7436968744db793188f1feb075c8256e7669b32d414b352662de36",
  "operations": [
    {
      "key": "mcp-servers:createCustomMcpServer",
      "operationId": "createCustomMcpServer",
      "bundle": "mcp-servers.yaml",
      "title": "Register a custom MCP server",
      "description": "Registers an HTTP MCP server in the caller's project. A duplicate server ID fails with `409`; use [update](/api/mcp-servers/update-custom-mcp-server) to replace the record.\n\nConfiguration validation and the egress guard run before storage. Invalid configuration, a referenced secret absent from this project, or an attempt to create at the configured project limit (20 servers by default) returns `400`. Concurrent creates can exceed this count-before-create limit. Secret existence is checked at write time so a missing credential is reported before the first tool call. Endpoint restrictions also apply when connecting; an HTTPS URL alone does not establish a safe destination.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers)",
      "slug": "/api/mcp-servers/create-custom-mcp-server",
      "method": "POST",
      "path": "/api/v1/mcp-servers/create",
      "requestSchema": "llm_v1_services_mcp_v1_CreateCustomMCPServerRequest",
      "responseSchema": "llm_v1_services_mcp_v1_CreateCustomMCPServerResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Server registered; the stored record is echoed back",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine administration of tenant-project custom MCP configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require authenticated backend and project configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Machine administration of tenant-project custom MCP configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "mcp-servers:getCustomMcpServer",
      "operationId": "getCustomMcpServer",
      "bundle": "mcp-servers.yaml",
      "title": "Get a custom MCP server",
      "description": "Returns one server record, including disabled ones. An unknown server ID returns `404`. The response does not expose the referenced credential's value.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers)",
      "slug": "/api/mcp-servers/get-custom-mcp-server",
      "method": "POST",
      "path": "/api/v1/mcp-servers/get",
      "requestSchema": "llm_v1_services_mcp_v1_GetCustomMCPServerRequest",
      "responseSchema": "llm_v1_services_mcp_v1_GetCustomMCPServerResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Server returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine administration of tenant-project custom MCP configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require authenticated backend and project configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Machine administration of tenant-project custom MCP configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "mcp-servers:listCustomMcpServers",
      "operationId": "listCustomMcpServers",
      "bundle": "mcp-servers.yaml",
      "title": "List custom MCP servers",
      "description": "Returns the project's matching custom servers without pagination. Use the secret name filter to inspect dependencies before rotating or deleting a credential.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers)",
      "slug": "/api/mcp-servers/list-custom-mcp-servers",
      "method": "POST",
      "path": "/api/v1/mcp-servers/list",
      "requestSchema": "llm_v1_services_mcp_v1_ListCustomMCPServersRequest",
      "responseSchema": "llm_v1_services_mcp_v1_ListCustomMCPServersResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "The project's servers",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine administration of tenant-project custom MCP configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require authenticated backend and project configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Machine administration of tenant-project custom MCP configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "mcp-servers:updateCustomMcpServer",
      "operationId": "updateCustomMcpServer",
      "bundle": "mcp-servers.yaml",
      "title": "Update a custom MCP server",
      "description": "Replaces the mutable server configuration and increments its version. Read the saved record, edit the intended fields and submit the complete desired server: omitting [`enabled`](/api/models/schema-p1cuh9jgfq#request-field-enabled) disables it, and omitted optional fields are cleared. The top-level `serverId` selects the record; an update cannot rename it. There is no revision precondition, so concurrent stale updates can overwrite one another.\n\nA saved update does not confirm that every subsequent call has switched to the new configuration, and it does not cancel in-flight calls. Use `get` to inspect the saved record and `test-connection` to check a connection using it. The same validation as create applies; an unknown server returns `404`.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers)",
      "slug": "/api/mcp-servers/update-custom-mcp-server",
      "method": "POST",
      "path": "/api/v1/mcp-servers/update",
      "requestSchema": "llm_v1_services_mcp_v1_UpdateCustomMCPServerRequest",
      "responseSchema": "llm_v1_services_mcp_v1_UpdateCustomMCPServerResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Server updated; the stored record is echoed back",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine administration of tenant-project custom MCP configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require authenticated backend and project configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Machine administration of tenant-project custom MCP configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "mcp-servers:deleteCustomMcpServer",
      "operationId": "deleteCustomMcpServer",
      "bundle": "mcp-servers.yaml",
      "title": "Delete a custom MCP server",
      "description": "Removes the server record. Deleting an absent server succeeds with `deleted: false`. Conversations and profiles retain references to the deleted ID, so remove those references separately. New resolution fails once deletion is observed; in-flight calls and previously loaded definitions are not recalled. The referenced secret is left in place.\n\nTo retain the configuration while disabling the server, set `enabled: false` through [update](/api/mcp-servers/update-custom-mcp-server).\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers)",
      "slug": "/api/mcp-servers/delete-custom-mcp-server",
      "method": "POST",
      "path": "/api/v1/mcp-servers/delete",
      "requestSchema": "llm_v1_services_mcp_v1_DeleteCustomMCPServerRequest",
      "responseSchema": "llm_v1_services_mcp_v1_DeleteCustomMCPServerResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Delete processed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine administration of tenant-project custom MCP configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require authenticated backend and project configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Machine administration of tenant-project custom MCP configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "mcp-servers:testCustomMcpServerConnection",
      "operationId": "testCustomMcpServerConnection",
      "bundle": "mcp-servers.yaml",
      "title": "Test a custom MCP server connection",
      "description": "Reads a stored configuration snapshot, performs the MCP handshake/tool listing and returns the observed count and latency. A concurrent update can change the record after that read. This operation reads the stored definition directly, making it useful after a configuration change.\n\nCheck [`success`](/api/mcp-servers/test-custom-mcp-server-connection#response-field-success) is `true`; a connection failure can return HTTP 200 with `success` false or omitted and an error. Inspect the error and repair the endpoint, authentication or network access before retrying. Authentication, validation, rate limiting and infrastructure failures can also return non-success HTTP responses.\n\nTests are limited to 10 per minute per project; destination restrictions apply when connecting. Rate limiting does not replace network isolation or authorization. A successful test is a point-in-time connection check, not a guarantee that every advertised tool is safe or available.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers)",
      "slug": "/api/mcp-servers/test-custom-mcp-server-connection",
      "method": "POST",
      "path": "/api/v1/mcp-servers/test-connection",
      "requestSchema": "llm_v1_services_mcp_v1_TestCustomMCPServerConnectionRequest",
      "responseSchema": "llm_v1_services_mcp_v1_TestCustomMCPServerConnectionResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "The test ran; read `success` for the outcome",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine administration of tenant-project custom MCP configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require authenticated backend and project configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Machine administration of tenant-project custom MCP configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "scheduled-jobs:createJob",
      "operationId": "createJob",
      "bundle": "scheduled-jobs.yaml",
      "title": "Create a scheduled job",
      "description": "Creates a new scheduled job. The job becomes active immediately and fires on its next matching time.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Run work on a schedule](/core-platform/scheduling) · [Manage jobs](/core-platform/scheduling/managing) · [Automate recurring agent work](/core-platform/scheduling/build-scheduled-agents) · [Create a scheduled job](/core-platform/scheduling/creating) · [Monitor executions and retries](/core-platform/scheduling/execution) · [Schedule retries and auto-pause](/api/scheduled-jobs/schedules)",
      "slug": "/api/scheduled-jobs/create-job",
      "method": "POST",
      "path": "/api/v1/scheduler/create-job",
      "requestSchema": "platform_v1_services_scheduler_gateway_v1_CreateJobRequest",
      "responseSchema": "platform_v1_services_scheduler_v1_Schedule",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Scheduled job created",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant backend scheduled-job administration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Authenticate tenant/project job-management entitlement and target ownership; the current intended audience does not include delegated personal scheduling by an app user. Intended audience: Tenant backend. Tenant backend scheduled-job administration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "scheduled-jobs:getJob",
      "operationId": "getJob",
      "bundle": "scheduled-jobs.yaml",
      "title": "Get a scheduled job",
      "description": "Returns the metadata and current state of a single scheduled job by ID.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage jobs](/core-platform/scheduling/managing)",
      "slug": "/api/scheduled-jobs/get-job",
      "method": "POST",
      "path": "/api/v1/scheduler/get-job",
      "requestSchema": "platform_v1_services_scheduler_gateway_v1_GetJobRequest",
      "responseSchema": "platform_v1_services_scheduler_v1_Schedule",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Scheduled job returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant backend scheduled-job administration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Authenticate tenant/project job-management entitlement and target ownership; the current intended audience does not include delegated personal scheduling by an app user. Intended audience: Tenant backend. Tenant backend scheduled-job administration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "scheduled-jobs:listJobs",
      "operationId": "listJobs",
      "bundle": "scheduled-jobs.yaml",
      "title": "List scheduled jobs",
      "description": "Returns a paginated list of scheduled jobs for the authenticated tenant and project. Optionally filter by lifecycle state or target kind.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage jobs](/core-platform/scheduling/managing)",
      "slug": "/api/scheduled-jobs/list-jobs",
      "method": "POST",
      "path": "/api/v1/scheduler/list-jobs",
      "requestSchema": "platform_v1_services_scheduler_gateway_v1_ListJobsRequest",
      "responseSchema": "platform_v1_services_scheduler_v1_ListJobsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Scheduled jobs returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant backend scheduled-job administration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Authenticate tenant/project job-management entitlement and target ownership; the current intended audience does not include delegated personal scheduling by an app user. Intended audience: Tenant backend. Tenant backend scheduled-job administration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "scheduled-jobs:updateJob",
      "operationId": "updateJob",
      "bundle": "scheduled-jobs.yaml",
      "title": "Update a scheduled job",
      "description": "Updates the provided schedule settings. Only included fields change; omitted fields remain unchanged.\n\n### Timing changes\n\nThe scheduler applies timing edits before returning by cancelling and reinserting the scheduled entry. This cannot undo an HTTP callback already dispatched or a business action your receiver has accepted.\n\n[`nextTriggerAt`](/api/models/schema-1ld0l8rmvg#response-field-nexttriggerat) on the returned job is the scheduling snapshot after the update; it can change as work advances. Do not infer wall-clock firing precision or business completion from that timestamp.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage jobs](/core-platform/scheduling/managing)",
      "slug": "/api/scheduled-jobs/update-job",
      "method": "POST",
      "path": "/api/v1/scheduler/update-job",
      "requestSchema": "platform_v1_services_scheduler_gateway_v1_UpdateJobRequest",
      "responseSchema": "platform_v1_services_scheduler_v1_UpdateJobResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Scheduled job updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant backend scheduled-job administration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Authenticate tenant/project job-management entitlement and target ownership; the current intended audience does not include delegated personal scheduling by an app user. Intended audience: Tenant backend. Tenant backend scheduled-job administration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "scheduled-jobs:pauseJob",
      "operationId": "pauseJob",
      "bundle": "scheduled-jobs.yaml",
      "title": "Pause a scheduled job",
      "description": "Pauses future scheduling for the job. A dispatch already admitted or in flight can still complete; pausing is not remote-effect cancellation.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage jobs](/core-platform/scheduling/managing)",
      "slug": "/api/scheduled-jobs/pause-job",
      "method": "POST",
      "path": "/api/v1/scheduler/pause-job",
      "requestSchema": "platform_v1_services_scheduler_gateway_v1_PauseJobRequest",
      "responseSchema": "platform_v1_services_scheduler_v1_Schedule",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Scheduled job paused",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant backend scheduled-job administration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Authenticate tenant/project job-management entitlement and target ownership; the current intended audience does not include delegated personal scheduling by an app user. Intended audience: Tenant backend. Tenant backend scheduled-job administration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "scheduled-jobs:resumeJob",
      "operationId": "resumeJob",
      "bundle": "scheduled-jobs.yaml",
      "title": "Resume a scheduled job",
      "description": "Resumes a previously paused scheduled job, returning it to the active state.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage jobs](/core-platform/scheduling/managing)",
      "slug": "/api/scheduled-jobs/resume-job",
      "method": "POST",
      "path": "/api/v1/scheduler/resume-job",
      "requestSchema": "platform_v1_services_scheduler_gateway_v1_ResumeJobRequest",
      "responseSchema": "platform_v1_services_scheduler_v1_Schedule",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Scheduled job resumed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant backend scheduled-job administration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Authenticate tenant/project job-management entitlement and target ownership; the current intended audience does not include delegated personal scheduling by an app user. Intended audience: Tenant backend. Tenant backend scheduled-job administration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "scheduled-jobs:deleteJob",
      "operationId": "deleteJob",
      "bundle": "scheduled-jobs.yaml",
      "title": "Delete a scheduled job",
      "description": "Soft-deletes the schedule and stops future scheduling. The record is retained for inspection. Already dispatched work and its external effects are not undone by deleting the schedule.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage jobs](/core-platform/scheduling/managing)",
      "slug": "/api/scheduled-jobs/delete-job",
      "method": "POST",
      "path": "/api/v1/scheduler/delete-job",
      "requestSchema": "platform_v1_services_scheduler_gateway_v1_DeleteJobRequest",
      "responseSchema": "platform_v1_services_scheduler_v1_DeleteJobResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Scheduled job deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant backend scheduled-job administration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Authenticate tenant/project job-management entitlement and target ownership; the current intended audience does not include delegated personal scheduling by an app user. Intended audience: Tenant backend. Tenant backend scheduled-job administration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "scheduled-jobs:deleteJobsForProject",
      "operationId": "deleteJobsForProject",
      "bundle": "scheduled-jobs.yaml",
      "title": "Delete all scheduled jobs for a project",
      "description": "Soft-deletes every scheduled job belonging to the tenant and project in the request context. Intended as a tenant lifecycle hook invoked during project teardown. The request body carries no fields — tenant and project are derived from ingress headers.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage jobs](/core-platform/scheduling/managing)",
      "slug": "/api/scheduled-jobs/delete-jobs-for-project",
      "method": "POST",
      "path": "/api/v1/scheduler/delete-jobs-for-project",
      "requestSchema": "platform_v1_services_scheduler_gateway_v1_DeleteJobsForProjectRequest",
      "responseSchema": "platform_v1_services_scheduler_v1_DeleteJobsForProjectResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Scheduled jobs deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant backend scheduled-job administration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Authenticate tenant/project job-management entitlement and target ownership; the current intended audience does not include delegated personal scheduling by an app user. Intended audience: Tenant backend. Tenant backend scheduled-job administration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "scheduled-jobs:deleteJobsForOwner",
      "operationId": "deleteJobsForOwner",
      "bundle": "scheduled-jobs.yaml",
      "title": "Delete all scheduled jobs for the calling owner",
      "description": "Soft-deletes schedules owned by the authenticated beneficiary within the verified tenant/project context. This is an explicit schedule-cleanup operation for offboarding or user-requested deletion. Do not call it on sign-out: schedules belong to the user/project and are not scoped to the current device session.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage jobs](/core-platform/scheduling/managing)",
      "slug": "/api/scheduled-jobs/delete-jobs-for-owner",
      "method": "POST",
      "path": "/api/v1/scheduler/delete-jobs-for-owner",
      "requestSchema": "platform_v1_services_scheduler_gateway_v1_DeleteJobsForOwnerRequest",
      "responseSchema": "platform_v1_services_scheduler_v1_DeleteJobsForOwnerResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Scheduled jobs deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant backend scheduled-job administration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Authenticate tenant/project job-management entitlement and target ownership; the current intended audience does not include delegated personal scheduling by an app user. Intended audience: Tenant backend. Tenant backend scheduled-job administration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "scheduled-jobs:listExecutions",
      "operationId": "listExecutions",
      "bundle": "scheduled-jobs.yaml",
      "title": "List executions for a scheduled job",
      "description": "Returns a paginated execution history for a scheduled job. Each record captures a single firing — its status, HTTP result, attempt number, and duration. Optionally filter by execution status.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Monitor executions and retries](/core-platform/scheduling/execution)",
      "slug": "/api/scheduled-jobs/list-executions",
      "method": "POST",
      "path": "/api/v1/scheduler/list-executions",
      "requestSchema": "platform_v1_services_scheduler_gateway_v1_ListExecutionsRequest",
      "responseSchema": "platform_v1_services_scheduler_v1_ListExecutionsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Executions returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant backend scheduled-job administration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Authenticate tenant/project job-management entitlement and target ownership; the current intended audience does not include delegated personal scheduling by an app user. Intended audience: Tenant backend. Tenant backend scheduled-job administration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listTraces",
      "operationId": "listTraces",
      "bundle": "evals.yaml",
      "title": "List traces",
      "description": "Lists traces for the authenticated tenant, newest first — the only ordering, so an `orderBy` other than `timestamp.desc` is rejected with HTTP 400. One trace is one conversation turn.\n\n### Filtering by entity\n\n`conversationId`, `profileId`, `userId` and `sessionId` are applied at the source, not over the returned page. Repeated entity filters intersect: `conversationId` + `profileId` returns turns in that conversation produced by that profile, not the union.\n\n`cursorPage.totalItems` is the only total any cursor-paged operation returns, and it is omitted whenever a profile, config-hash or level filter is set — that total cannot be counted exactly — or the count is unavailable.\n\n`conversationId` accepts the bare thread id — it is qualified with your verified tenant server-side, so an id held by a product surface works without the caller reconstructing the tenant-prefixed form.\n\nThe `filters` array is the general filter-builder vocabulary. Entity columns there (`conversationId`, `profileId`, `configHash`, `sourceUserMessageId`) accept an exact `=` match or `any of` a set. A `level` row matches traces with at least one observation at that level. Latency, token and cost columns are aggregates over a trace and cannot be filtered here (use `list-observations`). A filter row the underlying store cannot express — an inexact operator on an entity column, an aggregate column, or an unsupported column — is rejected with HTTP 400 rather than applied to the returned page.\n\nHistorical untagged traces can remain absent from entity-filtered results. The legacy tag-backfill operation has been removed; do not infer absence of a conversation from an empty tag query.\n\n### Trace query support\n\nA profile filter cannot be combined with [`level`](/api/evals/list-traces#request-field-level), and free-text search is not implemented. Narrow the supported profile/time query instead of relying on an ignored search setting.\n\nFor aggregate analysis, use supported observation-level filters to investigate one step or analyze an explicitly collected dataset. Keep the unit clear: one observation's cost is not the entire turn's cost.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Find out why a customer’s reply was slow](/insights/evaluation/reading)",
      "slug": "/api/evals/list-traces",
      "method": "POST",
      "path": "/api/v1/evals/list-traces",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListTracesRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListTracesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:getTrace",
      "operationId": "getTrace",
      "bundle": "evals.yaml",
      "title": "Get a trace",
      "description": "Fetch one trace with its observations expanded.\n\nWhen addressing a turn, `conversationId` accepts a bare thread id and is qualified with your verified tenant. The assistant message or rating event carries the source user-message identity needed to find that turn.\n\nObservation/score expansion is capped at 20 upstream pages of 100 without a partial-result flag; large detail responses do not establish a complete evaluation cohort. If the expected step is missing, continue with [observation search](/insights/evaluation/reading#observations-across-traces) rather than claiming the turn ended there.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Find out why a customer’s reply was slow](/insights/evaluation/reading)",
      "slug": "/api/evals/get-trace",
      "method": "POST",
      "path": "/api/v1/evals/get-trace",
      "requestSchema": "platform_v1_services_eval_gateway_v1_GetTraceRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_GetTraceResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listObservations",
      "operationId": "listObservations",
      "bundle": "evals.yaml",
      "title": "List observations",
      "description": "Lists the individual spans, generations and events inside traces.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Find out why a customer’s reply was slow](/insights/evaluation/reading)",
      "slug": "/api/evals/list-observations",
      "method": "POST",
      "path": "/api/v1/evals/list-observations",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListObservationsRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListObservationsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listSessions",
      "operationId": "listSessions",
      "bundle": "evals.yaml",
      "title": "List sessions",
      "description": "Lists sessions for the authenticated tenant.\n\nThe `filters` array accepts the session columns `id` (the session id), `userIds`, `traceTags`, `createdAt`, `environment` and `metadata`. Columns aggregated over a session — duration, trace count, tokens, scores, comments — cannot be filtered and are rejected with HTTP 400. There is no free-text search.\n\nReads are bounded. A session can repeat at an equal-timestamp cursor boundary. Summary activity can extend outside the list window; unavailable rollup data can appear as zero. Do not treat these summaries as a complete frozen cohort.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Find out why a customer’s reply was slow](/insights/evaluation/reading)",
      "slug": "/api/evals/list-sessions",
      "method": "POST",
      "path": "/api/v1/evals/list-sessions",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListSessionsRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListSessionsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:getSession",
      "operationId": "getSession",
      "bundle": "evals.yaml",
      "title": "Get a session",
      "description": "Fetch one session and the traces belonging to it.\n\n### Session summaries\n\nSession summaries can include activity outside the list window, and a session can repeat at cursor boundaries. Deduplicate by session ID when collecting pages. Missing rollup data reported as zero is not proof that the session used no resources. Keep those limits with your diagnosis.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Find out why a customer’s reply was slow](/insights/evaluation/reading)",
      "slug": "/api/evals/get-session",
      "method": "POST",
      "path": "/api/v1/evals/get-session",
      "requestSchema": "platform_v1_services_eval_gateway_v1_GetSessionRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_GetSessionResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listScores",
      "operationId": "listScores",
      "bundle": "evals.yaml",
      "title": "List scores",
      "description": "Lists recorded scores across their sources and evaluation targets.\n\n### Filtering by what the rating is about\n\n`conversationId` and `profileId` answer \"every rating on this conversation\" and \"every rating on turns this agent profile produced\". Each is decided per score — on the score's own metadata, or on the trace it scores when the metadata does not say — and combining them is an intersection. `conversationId` accepts a bare thread id and qualifies it with your verified tenant.\n\n### Reading the result honestly\n\n**`filterNarrowed`** matters when you paginate. Some filters cannot be applied by the underlying store, so rows are removed after they are fetched: `conversationId`, `profileId`, `userId`, the platform `source` values the store does not distinguish, and the rows of the `filters` array. The response sets `filterNarrowed: true` only when at least one row was removed from the pages fetched for this response. It can remain false or be omitted even when these filters were evaluated. A page may be shorter than `pageSize` or empty while `cursorPage.nextCursor` still leads to more matches — keep following the cursor until it is omitted rather than stopping at a short page. A false or omitted flag is not a complete-history or consistent-snapshot guarantee. There is no total.\n\nDeduplicate IDs across pages when collecting a report.\n\n### Score filters and result coverage\n\nCurrent min/max score filters treat zero as unset; to apply a zero bound, collect the relevant permitted pages and filter in your application. See [list-scores](/api/evals/list-scores) for supported filters.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Find out why a customer’s reply was slow](/insights/evaluation/reading) · [Feedback and score attribution](/api/evals/scoring)",
      "slug": "/api/evals/list-scores",
      "method": "POST",
      "path": "/api/v1/evals/list-scores",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListScoresRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListScoresResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:recordScore",
      "operationId": "recordScore",
      "bundle": "evals.yaml",
      "title": "Record a score",
      "description": "Records a tenant-side reviewer/operator score.\n\n### Resolving the rated turn\n\nTurn addressing is trace-only. A bare conversation ID is qualified with trusted tenant context. Messages without the required historical addressing metadata can be rejected; use an independently verified trace ID in that case.\n\nThe API assigns human-source classification and derives rater context from trusted credentials, not the body. A machine key does not identify a human reviewer. A deterministic per-rater/target/name score ID supports replacing a rating, but the current delete operation does not enforce author ownership.\n\n### Supported ratings\n\nUse a trace target with numeric or boolean values. The current API maps the resolved target into `traceId`; categorical/text values and observation/session/dataset-run targets in the schema are not faithfully supported. Use the supported trace/value combinations shown here.\n\n### Examples\n\nThe request examples below show a numeric score of 0.9 for a trace target and a configured helpfulness rating with an explanatory comment. Use your verified trace target and applicable score configuration; the example identifiers are illustrative.\n\n### Re-rating and withdrawing\n\nA stable per-rater/target/name score ID does not alone guarantee one current record across dates. The current API omits the original creation timestamp needed for cross-day replacement. Verify read-back after retries or re-rating. Withdrawal must check creator and scope; delete-score currently lacks that creator check and must remain restricted to trusted operators.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review) · [Feedback and score attribution](/api/evals/scoring)",
      "slug": "/api/evals/record-score",
      "method": "POST",
      "path": "/api/v1/evals/record-score",
      "requestSchema": "platform_v1_services_eval_gateway_v1_RecordScoreRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_RecordScoreResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:deleteScore",
      "operationId": "deleteScore",
      "bundle": "evals.yaml",
      "title": "Delete a score",
      "description": "Deletes a score by ID. The current implementation checks access to the evaluation backend but does not enforce per-author ownership for deletion. Restrict this operation to trusted evaluation administrators until that requirement is implemented.\n\nObtain the score ID from [list scores](/api/evals/list-scores), read back the deletion result and allow for delayed updates in other views. An immediate response does not establish that every analytics projection is cleared.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review)",
      "slug": "/api/evals/delete-score",
      "method": "POST",
      "path": "/api/v1/evals/delete-score",
      "requestSchema": "platform_v1_services_eval_gateway_v1_DeleteScoreRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_DeleteScoreResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listScoreConfigs",
      "operationId": "listScoreConfigs",
      "bundle": "evals.yaml",
      "title": "List score configs",
      "description": "Lists the rating scales defined for this tenant.\n\nUse this list to select a compatible scale before recording a score. Archived configs remain readable for historical interpretation but are not offered for new ratings.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review) · [Feedback and score attribution](/api/evals/scoring)",
      "slug": "/api/evals/list-score-configs",
      "method": "POST",
      "path": "/api/v1/evals/list-score-configs",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListScoreConfigsRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListScoreConfigsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:createScoreConfig",
      "operationId": "createScoreConfig",
      "bundle": "evals.yaml",
      "title": "Create a score config",
      "description": "Creates a rating scale that gives scores a consistent interpretation across turns.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review)",
      "slug": "/api/evals/create-score-config",
      "method": "POST",
      "path": "/api/v1/evals/create-score-config",
      "requestSchema": "platform_v1_services_eval_gateway_v1_CreateScoreConfigRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_CreateScoreConfigResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:updateScoreConfig",
      "operationId": "updateScoreConfig",
      "bundle": "evals.yaml",
      "title": "Update a score config",
      "description": "Edits a score config, and archives one via `isArchived`. Optional fields are omitted rather than zeroed, so leaving a field out means \"leave it alone\" rather than \"set it to zero\".\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review) · [Feedback and score attribution](/api/evals/scoring)",
      "slug": "/api/evals/update-score-config",
      "method": "POST",
      "path": "/api/v1/evals/update-score-config",
      "requestSchema": "platform_v1_services_eval_gateway_v1_UpdateScoreConfigRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_UpdateScoreConfigResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:createComment",
      "operationId": "createComment",
      "bundle": "evals.yaml",
      "title": "Create a comment",
      "description": "Attaches a reviewer note to an evaluation object. Author attribution comes from trusted caller context when available; a bare key may create an unattributed comment. Current withdrawal suppresses platform reads rather than proving physical erasure.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review)",
      "slug": "/api/evals/create-comment",
      "method": "POST",
      "path": "/api/v1/evals/create-comment",
      "requestSchema": "platform_v1_services_eval_gateway_v1_CreateCommentRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_CreateCommentResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listComments",
      "operationId": "listComments",
      "bundle": "evals.yaml",
      "title": "List comments",
      "description": "Lists the comments on one object.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review)",
      "slug": "/api/evals/list-comments",
      "method": "POST",
      "path": "/api/v1/evals/list-comments",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListCommentsRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListCommentsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:deleteComment",
      "operationId": "deleteComment",
      "bundle": "evals.yaml",
      "title": "Delete a comment",
      "description": "Suppresses the selected comment from platform reads. The provider retains the comment; a successful response does not mean it was deleted from the provider.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review)",
      "slug": "/api/evals/delete-comment",
      "method": "POST",
      "path": "/api/v1/evals/delete-comment",
      "requestSchema": "platform_v1_services_eval_gateway_v1_DeleteCommentRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_DeleteCommentResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listDatasets",
      "operationId": "listDatasets",
      "bundle": "evals.yaml",
      "title": "List datasets",
      "description": "Lists the evaluation datasets defined for this tenant.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Replay datasets and runs](/insights/evaluation/datasets-and-runs)",
      "slug": "/api/evals/list-datasets",
      "method": "POST",
      "path": "/api/v1/evals/list-datasets",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListDatasetsRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListDatasetsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:createDataset",
      "operationId": "createDataset",
      "bundle": "evals.yaml",
      "title": "Create a dataset",
      "description": "Creates an evaluation dataset.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Replay datasets and runs](/insights/evaluation/datasets-and-runs)",
      "slug": "/api/evals/create-dataset",
      "method": "POST",
      "path": "/api/v1/evals/create-dataset",
      "requestSchema": "platform_v1_services_eval_gateway_v1_CreateDatasetRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_CreateDatasetResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:addDatasetItem",
      "operationId": "addDatasetItem",
      "bundle": "evals.yaml",
      "title": "Add a dataset item",
      "description": "Adds a dataset item. The ID is derived from the dataset and `sourceUserMessageId` when supplied, otherwise from the source trace ID. Repeating that identity addresses the same item; a source identity must be meaningful and stable. Provide the intended input and expected output explicitly: the current API does not fetch a gold answer from a source trace.\n\n### Dataset input capture and identity\n\n| Input or identity                                                                      | Contract                                                                                                                                    |\n| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |\n| Dataset item address                                                                   | Derived from the dataset and source turn. Adding the same turn to different datasets produces different items.                              |\n| [`inputJson`](/api/evals/add-dataset-item#request-field-inputjson) and expected output | Only supplied content is recorded; an empty input does not trigger automatic context capture.                                               |\n| Retry or replacement                                                                   | A stable item ID does not establish ordering between a stale retry and a newer curated revision. Reconcile the stored item before retrying. |\n\nCapture and curate source material explicitly, including redaction, omitted fields and the provenance of tool or memory fixtures.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Replay datasets and runs](/insights/evaluation/datasets-and-runs) · [Dataset identity and run provenance](/api/evals/datasets)",
      "slug": "/api/evals/add-dataset-item",
      "method": "POST",
      "path": "/api/v1/evals/add-dataset-item",
      "requestSchema": "platform_v1_services_eval_gateway_v1_AddDatasetItemRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_AddDatasetItemResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listDatasetItems",
      "operationId": "listDatasetItems",
      "bundle": "evals.yaml",
      "title": "List dataset items",
      "description": "Lists items in a dataset.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Replay datasets and runs](/insights/evaluation/datasets-and-runs) · [Dataset identity and run provenance](/api/evals/datasets)",
      "slug": "/api/evals/list-dataset-items",
      "method": "POST",
      "path": "/api/v1/evals/list-dataset-items",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListDatasetItemsRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListDatasetItemsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:updateDatasetItem",
      "operationId": "updateDatasetItem",
      "bundle": "evals.yaml",
      "title": "Update a dataset item",
      "description": "Edits an item — typically to fill in `expectedOutputJson` after review.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Replay datasets and runs](/insights/evaluation/datasets-and-runs) · [Dataset identity and run provenance](/api/evals/datasets)",
      "slug": "/api/evals/update-dataset-item",
      "method": "POST",
      "path": "/api/v1/evals/update-dataset-item",
      "requestSchema": "platform_v1_services_eval_gateway_v1_UpdateDatasetItemRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_UpdateDatasetItemResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listDatasetRuns",
      "operationId": "listDatasetRuns",
      "bundle": "evals.yaml",
      "title": "List dataset runs",
      "description": "Lists past runs against a dataset.\n\nUses cursorPage. Dataset-name resolution currently searches only the first dataset page. Item-count enrichment is bounded and can leave zero after failure; a zero count does not prove that no items ran.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Replay datasets and runs](/insights/evaluation/datasets-and-runs)",
      "slug": "/api/evals/list-dataset-runs",
      "method": "POST",
      "path": "/api/v1/evals/list-dataset-runs",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListDatasetRunsRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListDatasetRunsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:getDatasetRun",
      "operationId": "getDatasetRun",
      "bundle": "evals.yaml",
      "title": "Get a dataset run",
      "description": "Fetches run metadata by dataset name and run name. It does not return per-item results.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Replay datasets and runs](/insights/evaluation/datasets-and-runs)",
      "slug": "/api/evals/get-dataset-run",
      "method": "POST",
      "path": "/api/v1/evals/get-dataset-run",
      "requestSchema": "platform_v1_services_eval_gateway_v1_GetDatasetRunRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_GetDatasetRunResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listAnnotationQueues",
      "operationId": "listAnnotationQueues",
      "bundle": "evals.yaml",
      "title": "List annotation queues",
      "description": "Lists the review queues defined for this tenant.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review)",
      "slug": "/api/evals/list-annotation-queues",
      "method": "POST",
      "path": "/api/v1/evals/list-annotation-queues",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListAnnotationQueuesRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListAnnotationQueuesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:createAnnotationQueue",
      "operationId": "createAnnotationQueue",
      "bundle": "evals.yaml",
      "title": "Create an annotation queue",
      "description": "Creates a review queue bound to a set of score configs — the scales reviewers will use on it.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review)",
      "slug": "/api/evals/create-annotation-queue",
      "method": "POST",
      "path": "/api/v1/evals/create-annotation-queue",
      "requestSchema": "platform_v1_services_eval_gateway_v1_CreateAnnotationQueueRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_CreateAnnotationQueueResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:enqueueForAnnotation",
      "operationId": "enqueueForAnnotation",
      "bundle": "evals.yaml",
      "title": "Enqueue an item for annotation",
      "description": "Adds a trace, observation or session to a review queue.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review)",
      "slug": "/api/evals/enqueue-for-annotation",
      "method": "POST",
      "path": "/api/v1/evals/enqueue-for-annotation",
      "requestSchema": "platform_v1_services_eval_gateway_v1_EnqueueForAnnotationRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_EnqueueForAnnotationResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:listAnnotationQueueItems",
      "operationId": "listAnnotationQueueItems",
      "bundle": "evals.yaml",
      "title": "List annotation queue items",
      "description": "Lists annotation queue items.\n\n### Reading an item\n\nFor a trace item, pass [`objectId`](/api/models/schema-ovc35nr9td#response-field-objectid) to [get-trace](/api/evals/get-trace). Other target kinds need their matching read operation.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review)",
      "slug": "/api/evals/list-annotation-queue-items",
      "method": "POST",
      "path": "/api/v1/evals/list-annotation-queue-items",
      "requestSchema": "platform_v1_services_eval_gateway_v1_ListAnnotationQueueItemsRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_ListAnnotationQueueItemsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:completeAnnotationQueueItem",
      "operationId": "completeAnnotationQueueItem",
      "bundle": "evals.yaml",
      "title": "Complete an annotation queue item",
      "description": "Marks an annotation queue item completed. The immediate response can contain [`completedBy`](/api/models/schema-ovc35nr9td#response-field-completedby), but the current API does not persist that attribution for later list reads. Do not use this response alone as a durable reviewer audit record.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Review and score turns](/insights/evaluation/review)",
      "slug": "/api/evals/complete-annotation-queue-item",
      "method": "POST",
      "path": "/api/v1/evals/complete-annotation-queue-item",
      "requestSchema": "platform_v1_services_eval_gateway_v1_CompleteAnnotationQueueItemRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_CompleteAnnotationQueueItemResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "evals:getOverview",
      "operationId": "getOverview",
      "bundle": "evals.yaml",
      "title": "Get the eval overview",
      "description": "Aggregate trace counts, score averages and totals for a time window — the numbers behind a dashboard.\n\nCoverage and profile cards use the first 100 roots/scores, while volume metrics can describe a larger population. Observation-targeted scores are not counted as trace coverage. A profile filter does not establish a consistent denominator for every card; do not use these mixed populations as a release gate.\n\n### Overview populations and configuration identity\n\nInterpret quality alongside a fixed dataset's eligible, evaluated, failed and excluded cases; sampled coverage is not the proportion of every turn reviewed.\n\nSave the full configuration in the [regression workflow](/insights/evaluation/datasets-and-runs#4-record-the-run) before attributing a difference to one change.\n\nCallers use platform API access and do not need an evaluation-provider credential or direct evaluation-provider URL. Authorisation depends on verified caller identity and scope, not on which client interface made the request.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Find out why a customer’s reply was slow](/insights/evaluation/reading)",
      "slug": "/api/evals/get-overview",
      "method": "POST",
      "path": "/api/v1/evals/get-overview",
      "requestSchema": "platform_v1_services_eval_gateway_v1_GetOverviewRequest",
      "responseSchema": "platform_v1_services_eval_gateway_v1_GetOverviewResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "OK",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Machine harness/tenant tooling evaluation and observability. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive tenant/project identity and enforce evaluation permissions; no caller-supplied tenant/subject/rater authority. For attributed writes, derive operator attribution from trusted request context, never from request-body rater or author identifiers. Where an operation requires a person identity, that identity must represent a verified operator. Intended audience: Tenant backend. Machine harness/tenant tooling evaluation and observability.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:registerPushDevice",
      "operationId": "registerPushDevice",
      "bundle": "notifications.yaml",
      "title": "Register a push notification device",
      "description": "Registers an FCM device token for push notifications. Associates the token with the user's subscriber profile.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Keep push notifications attached to the signed-in user](/core-platform/notifications/push) · [Build a signed-in support chat that survives reconnects](/managed-agents/conversations/build-chat-assistant)",
      "slug": "/api/notifications/register-push-device",
      "method": "POST",
      "path": "/api/v1/notifications/register-push-device",
      "requestSchema": "notification_v1_services_gateway_v1_RegisterPushDeviceRequest",
      "responseSchema": "notification_v1_RegisterPushDeviceResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Device registered successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:unregisterPushDevice",
      "operationId": "unregisterPushDevice",
      "bundle": "notifications.yaml",
      "title": "Unregister a push notification device",
      "description": "Removes an FCM device token from the user's subscriber profile.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Keep push notifications attached to the signed-in user](/core-platform/notifications/push) · [Build a signed-in support chat that survives reconnects](/managed-agents/conversations/build-chat-assistant) · [Push registration and topic delivery](/api/notifications/delivery)",
      "slug": "/api/notifications/unregister-push-device",
      "method": "POST",
      "path": "/api/v1/notifications/unregister-push-device",
      "requestSchema": "notification_v1_services_gateway_v1_UnregisterPushDeviceRequest",
      "responseSchema": "notification_v1_UnregisterPushDeviceResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Device unregistered successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getRegisteredChannels",
      "operationId": "getRegisteredChannels",
      "bundle": "notifications.yaml",
      "title": "Get registered notification channels",
      "description": "Returns the list of notification channels and their registration status for the authenticated user.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Keep push notifications attached to the signed-in user](/core-platform/notifications/push)",
      "slug": "/api/notifications/get-registered-channels",
      "method": "POST",
      "path": "/api/v1/notifications/get-registered-channels",
      "requestSchema": "notification_v1_services_gateway_v1_GetRegisteredChannelsRequest",
      "responseSchema": "notification_v1_GetRegisteredChannelsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Channels retrieved successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getInboxSession",
      "operationId": "getInboxSession",
      "bundle": "notifications.yaml",
      "title": "Get an inbox session token",
      "description": "Returns a session token and connection URLs for the real-time in-app inbox. The token is short-lived and should be refreshed before expiry.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox) · [Inbox state and actions](/api/notifications/inbox)",
      "slug": "/api/notifications/get-inbox-session",
      "method": "POST",
      "path": "/api/v1/notifications/get-inbox-session",
      "requestSchema": "notification_v1_services_gateway_v1_GetInboxSessionRequest",
      "responseSchema": "notification_v1_GetInboxSessionResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Inbox session created successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:sendNotification",
      "operationId": "sendNotification",
      "bundle": "notifications.yaml",
      "title": "Send a notification to a user",
      "description": "Sends a notification to a single user by triggering a notification workflow. The configured workflow determines its delivery channels.\n\nA transactionId is a provider correlation/deduplication input, not an unlimited exactly-once guarantee or an authorization grant; reconcile uncertain sends before retrying.\n\n### Workflow definitions and payload variables\n\n[`workflowId`](/api/notifications/send-notification#request-field-workflowid) selects a prepared notification workflow containing its channels and message templates. Discover workflows through [list workflows](/api/notifications/list-workflows). The send operation renders that workflow with the supplied [`payload`](/api/notifications/send-notification#request-field-payload) variables; it does not accept arbitrary message text outside the template contract.\n\nSave the returned [`transactionId`](/api/notifications/send-notification#response-field-transactionid) and any one you supplied. Use it for [cancelling](/core-platform/notifications/sending#cancel-a-pending-notification) and [checking delivery](/core-platform/notifications/administration#delivery-status).\n\nInspect the trigger acknowledgment and errors before treating the send as accepted. Acceptance does not confirm delivery or a read receipt: workflow configuration, recipient preferences and provider delivery can produce later failures or suppression. Check delivery status for the subsequent channel attempts.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Send notifications](/core-platform/notifications/sending) · [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/send-notification",
      "method": "POST",
      "path": "/api/v1/notifications/manage/send",
      "requestSchema": "notification_v1_services_gateway_v1_SendNotificationRequest",
      "responseSchema": "notification_v1_SendNotificationResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Notification trigger accepted; delivery is separate",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:sendBulkNotification",
      "operationId": "sendBulkNotification",
      "bundle": "notifications.yaml",
      "title": "Send a notification to multiple users",
      "description": "Submits per-recipient notification events together. A batch can mix workflows.\n\nResults are per-event: one recipient failing does not fail the others. Inspect each entry's [`acknowledged`](/api/models/schema-oisl2i7j7o#response-field-acknowledged) and errors rather than the HTTP status alone. Accepted triggers are not delivery receipts, and retrying an entire partially accepted batch can duplicate work.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Send notifications](/core-platform/notifications/sending)",
      "slug": "/api/notifications/send-bulk-notification",
      "method": "POST",
      "path": "/api/v1/notifications/manage/send-bulk",
      "requestSchema": "notification_v1_services_gateway_v1_SendBulkNotificationRequest",
      "responseSchema": "notification_v1_SendBulkNotificationResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Bulk notification results",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:cancelNotification",
      "operationId": "cancelNotification",
      "bundle": "notifications.yaml",
      "title": "Cancel a pending notification",
      "description": "Requests cancellation of pending/scheduled provider work by transaction ID. It does not recall notifications already handed to a channel or undo an action the recipient performed. Inspect the cancellation result and preserve uncertainty when delivery is in flight.\n\n### Cancellation outcomes\n\nAn already processed notification can return HTTP 200 with `cancelled: false` and a message that it may already have been delivered. Inspect [`cancelled`](/api/notifications/cancel-notification#response-field-cancelled) rather than relying on HTTP status alone.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Send notifications](/core-platform/notifications/sending)",
      "slug": "/api/notifications/cancel-notification",
      "method": "POST",
      "path": "/api/v1/notifications/manage/cancel",
      "requestSchema": "notification_v1_services_gateway_v1_CancelNotificationRequest",
      "responseSchema": "notification_v1_CancelNotificationResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Cancellation result",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getInboxFeed",
      "operationId": "getInboxFeed",
      "bundle": "notifications.yaml",
      "title": "Get inbox feed messages",
      "description": "Returns a paginated list of in-app inbox messages for the authenticated user, applying the supplied selection criteria.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox)",
      "slug": "/api/notifications/get-inbox-feed",
      "method": "POST",
      "path": "/api/v1/notifications/get-inbox-feed",
      "requestSchema": "notification_v1_services_gateway_v1_GetInboxFeedRequest",
      "responseSchema": "notification_v1_GetInboxFeedResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Inbox feed retrieved successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getInboxUnseenCount",
      "operationId": "getInboxUnseenCount",
      "bundle": "notifications.yaml",
      "title": "Get unseen and unread inbox counts",
      "description": "Returns the number of unseen and unread messages in the user's inbox, optionally filtered by feed IDs.\n\nCounts are capped. Inspect the overflow flags before treating them as exact totals.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox)",
      "slug": "/api/notifications/get-inbox-unseen-count",
      "method": "POST",
      "path": "/api/v1/notifications/get-inbox-unseen-count",
      "requestSchema": "notification_v1_services_gateway_v1_GetInboxUnseenCountRequest",
      "responseSchema": "notification_v1_GetInboxUnseenCountResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Counts retrieved successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:markInboxMessageAs",
      "operationId": "markInboxMessageAs",
      "bundle": "notifications.yaml",
      "title": "Mark a single inbox message",
      "description": "Marks a specific inbox message as seen, read, unseen, or unread.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox)",
      "slug": "/api/notifications/mark-inbox-message-as",
      "method": "POST",
      "path": "/api/v1/notifications/mark-inbox-message",
      "requestSchema": "notification_v1_services_gateway_v1_MarkInboxMessageAsRequest",
      "responseSchema": "notification_v1_MarkInboxMessageAsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Message marked successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:markAllInboxMessagesAs",
      "operationId": "markAllInboxMessagesAs",
      "bundle": "notifications.yaml",
      "title": "Mark all inbox messages",
      "description": "Marks all inbox messages as seen, read, unseen, or unread. Optionally scoped to specific feed IDs.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox)",
      "slug": "/api/notifications/mark-all-inbox-messages-as",
      "method": "POST",
      "path": "/api/v1/notifications/mark-all-inbox-messages",
      "requestSchema": "notification_v1_services_gateway_v1_MarkAllInboxMessagesAsRequest",
      "responseSchema": "notification_v1_MarkAllInboxMessagesAsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Messages marked successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:deleteInboxMessage",
      "operationId": "deleteInboxMessage",
      "bundle": "notifications.yaml",
      "title": "Delete an inbox message",
      "description": "Deletes the specified inbox message in the effective user’s inbox. This does not recall copies already delivered through other channels or attest to backup erasure.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox)",
      "slug": "/api/notifications/delete-inbox-message",
      "method": "POST",
      "path": "/api/v1/notifications/delete-inbox-message",
      "requestSchema": "notification_v1_services_gateway_v1_DeleteInboxMessageRequest",
      "responseSchema": "notification_v1_DeleteInboxMessageResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Message deleted successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:archiveInboxMessage",
      "operationId": "archiveInboxMessage",
      "bundle": "notifications.yaml",
      "title": "Archive an inbox message",
      "description": "Archives a single inbox message. Archived messages are hidden from the default feed but retained.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox)",
      "slug": "/api/notifications/archive-inbox-message",
      "method": "POST",
      "path": "/api/v1/notifications/archive-inbox-message",
      "requestSchema": "notification_v1_services_gateway_v1_ArchiveInboxMessageRequest",
      "responseSchema": "notification_v1_ArchiveInboxMessageResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Message archived",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:unarchiveInboxMessage",
      "operationId": "unarchiveInboxMessage",
      "bundle": "notifications.yaml",
      "title": "Unarchive an inbox message",
      "description": "Restores a previously archived inbox message back into the default feed.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox)",
      "slug": "/api/notifications/unarchive-inbox-message",
      "method": "POST",
      "path": "/api/v1/notifications/unarchive-inbox-message",
      "requestSchema": "notification_v1_services_gateway_v1_UnarchiveInboxMessageRequest",
      "responseSchema": "notification_v1_UnarchiveInboxMessageResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Message unarchived",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:archiveAllInboxMessages",
      "operationId": "archiveAllInboxMessages",
      "bundle": "notifications.yaml",
      "title": "Archive all inbox messages",
      "description": "Archives all inbox messages for the authenticated user. Optionally scoped to specific workflow tags (OR logic).\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox) · [Inbox state and actions](/api/notifications/inbox)",
      "slug": "/api/notifications/archive-all-inbox-messages",
      "method": "POST",
      "path": "/api/v1/notifications/archive-all-inbox-messages",
      "requestSchema": "notification_v1_services_gateway_v1_ArchiveAllInboxMessagesRequest",
      "responseSchema": "notification_v1_ArchiveAllInboxMessagesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Messages archived",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:archiveAllReadInboxMessages",
      "operationId": "archiveAllReadInboxMessages",
      "bundle": "notifications.yaml",
      "title": "Archive all read inbox messages",
      "description": "Archives every already-read inbox message for the authenticated user. Optionally scoped to specific workflow tags (OR logic).\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox)",
      "slug": "/api/notifications/archive-all-read-inbox-messages",
      "method": "POST",
      "path": "/api/v1/notifications/archive-all-read-inbox-messages",
      "requestSchema": "notification_v1_services_gateway_v1_ArchiveAllReadInboxMessagesRequest",
      "responseSchema": "notification_v1_ArchiveAllReadInboxMessagesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Read messages archived",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:completeInboxAction",
      "operationId": "completeInboxAction",
      "bundle": "notifications.yaml",
      "title": "Complete an inbox message action",
      "description": "Marks an inbox action button completed. This changes inbox presentation state; it does not execute or authorize the business operation behind that button. Verify the actual business operation separately.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox)",
      "slug": "/api/notifications/complete-inbox-action",
      "method": "POST",
      "path": "/api/v1/notifications/complete-inbox-action",
      "requestSchema": "notification_v1_services_gateway_v1_CompleteInboxActionRequest",
      "responseSchema": "notification_v1_CompleteInboxActionResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Action completed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:revertInboxAction",
      "operationId": "revertInboxAction",
      "bundle": "notifications.yaml",
      "title": "Revert an inbox message action",
      "description": "Restores an inbox action button’s pending state. It does not undo the business operation previously associated with the button.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an in-app inbox](/core-platform/notifications/inbox)",
      "slug": "/api/notifications/revert-inbox-action",
      "method": "POST",
      "path": "/api/v1/notifications/revert-inbox-action",
      "requestSchema": "notification_v1_services_gateway_v1_RevertInboxActionRequest",
      "responseSchema": "notification_v1_RevertInboxActionResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Action reverted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:createTopic",
      "operationId": "createTopic",
      "bundle": "notifications.yaml",
      "title": "Create a notification topic",
      "description": "Creates a new topic that users can be subscribed to. Topics enable broadcasting notifications to groups of subscribers.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Broadcast with topics](/core-platform/notifications/topics) · [Push registration and topic delivery](/api/notifications/delivery)",
      "slug": "/api/notifications/create-topic",
      "method": "POST",
      "path": "/api/v1/notifications/manage/create-topic",
      "requestSchema": "notification_v1_services_gateway_v1_CreateTopicRequest",
      "responseSchema": "notification_v1_CreateTopicResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Topic created successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:deleteTopic",
      "operationId": "deleteTopic",
      "bundle": "notifications.yaml",
      "title": "Delete a notification topic",
      "description": "Deletes an existing topic. All subscriber associations with this topic are removed.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Broadcast with topics](/core-platform/notifications/topics) · [Push registration and topic delivery](/api/notifications/delivery)",
      "slug": "/api/notifications/delete-topic",
      "method": "POST",
      "path": "/api/v1/notifications/manage/delete-topic",
      "requestSchema": "notification_v1_services_gateway_v1_DeleteTopicRequest",
      "responseSchema": "notification_v1_DeleteTopicResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Topic deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:addSubscribersToTopic",
      "operationId": "addSubscribersToTopic",
      "bundle": "notifications.yaml",
      "title": "Add subscribers to a topic",
      "description": "Adds the selected users as subscribers to the specified topic.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Broadcast with topics](/core-platform/notifications/topics)",
      "slug": "/api/notifications/add-subscribers-to-topic",
      "method": "POST",
      "path": "/api/v1/notifications/manage/add-subscribers-to-topic",
      "requestSchema": "notification_v1_services_gateway_v1_AddSubscribersToTopicRequest",
      "responseSchema": "notification_v1_AddSubscribersToTopicResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Subscribers added",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:removeSubscribersFromTopic",
      "operationId": "removeSubscribersFromTopic",
      "bundle": "notifications.yaml",
      "title": "Remove subscribers from a topic",
      "description": "Removes the specified users from the topic's subscriber list.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Broadcast with topics](/core-platform/notifications/topics)",
      "slug": "/api/notifications/remove-subscribers-from-topic",
      "method": "POST",
      "path": "/api/v1/notifications/manage/remove-subscribers-from-topic",
      "requestSchema": "notification_v1_services_gateway_v1_RemoveSubscribersFromTopicRequest",
      "responseSchema": "notification_v1_RemoveSubscribersFromTopicResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Subscribers removed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:listTopicSubscribers",
      "operationId": "listTopicSubscribers",
      "bundle": "notifications.yaml",
      "title": "List subscribers of a topic",
      "description": "Returns the first page of user IDs subscribed to the selected topic, bounded by page\\_size. The page field does not advance the result, and no continuation cursor is returned. A true has\\_more value does not provide a way to retrieve the next page through this operation.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Broadcast with topics](/core-platform/notifications/topics)",
      "slug": "/api/notifications/list-topic-subscribers",
      "method": "POST",
      "path": "/api/v1/notifications/manage/list-topic-subscribers",
      "requestSchema": "notification_v1_services_gateway_v1_ListTopicSubscribersRequest",
      "responseSchema": "notification_v1_ListTopicSubscribersResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Topic subscribers listed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:checkTopicSubscription",
      "operationId": "checkTopicSubscription",
      "bundle": "notifications.yaml",
      "title": "Check if a user is subscribed to a topic",
      "description": "Returns whether the specified user is currently subscribed to the given topic.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Broadcast with topics](/core-platform/notifications/topics) · [Push registration and topic delivery](/api/notifications/delivery)",
      "slug": "/api/notifications/check-topic-subscription",
      "method": "POST",
      "path": "/api/v1/notifications/manage/check-topic-subscription",
      "requestSchema": "notification_v1_services_gateway_v1_CheckTopicSubscriptionRequest",
      "responseSchema": "notification_v1_CheckTopicSubscriptionResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Subscription status returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:sendToTopic",
      "operationId": "sendToTopic",
      "bundle": "notifications.yaml",
      "title": "Send a notification to all topic subscribers",
      "description": "Broadcasts a notification to all subscribers of the specified topic. Optionally excludes a single user (e.g., the action originator).\n\nAcceptance is not a delivery or read receipt. Workflow configuration, recipient preferences and provider delivery can produce later failures or suppression. A transactionId is a provider correlation/deduplication input, not an unlimited exactly-once guarantee or an authorization grant; reconcile uncertain sends before retrying.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Broadcast with topics](/core-platform/notifications/topics) · [Push registration and topic delivery](/api/notifications/delivery)",
      "slug": "/api/notifications/send-to-topic",
      "method": "POST",
      "path": "/api/v1/notifications/manage/send-to-topic",
      "requestSchema": "notification_v1_services_gateway_v1_SendToTopicRequest",
      "responseSchema": "notification_v1_SendToTopicResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Topic notification trigger accepted; delivery is separate",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:sendWithDigest",
      "operationId": "sendWithDigest",
      "bundle": "notifications.yaml",
      "title": "Send a notification with digest aggregation",
      "description": "Triggers a notification workflow that must already have a digest step configured. The workflow’s configured digest window determines whether and how events are batched before delivery; this operation does not create that digest configuration.\n\nAcceptance is not a delivery or read receipt. Workflow configuration, recipient preferences and provider delivery can produce later failures or suppression. A transactionId is a provider correlation/deduplication input, not an unlimited exactly-once guarantee or an authorization grant; reconcile uncertain sends before retrying.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Send notifications](/core-platform/notifications/sending)",
      "slug": "/api/notifications/send-with-digest",
      "method": "POST",
      "path": "/api/v1/notifications/manage/send-with-digest",
      "requestSchema": "notification_v1_services_gateway_v1_SendWithDigestRequest",
      "responseSchema": "notification_v1_SendWithDigestResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Digest notification accepted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:cancelDigestEvent",
      "operationId": "cancelDigestEvent",
      "bundle": "notifications.yaml",
      "title": "Cancel a pending digest event",
      "description": "Cancels a specific event from a pending digest. If the digest has already been sent, this has no effect.\n\n### Cancellation outcomes\n\nAn already processed digest event can return HTTP 200 with `cancelled: false` and a message that it may already have been processed. Inspect [`cancelled`](/api/notifications/cancel-digest-event#response-field-cancelled) rather than relying on HTTP status alone.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Send notifications](/core-platform/notifications/sending)",
      "slug": "/api/notifications/cancel-digest-event",
      "method": "POST",
      "path": "/api/v1/notifications/manage/cancel-digest-event",
      "requestSchema": "notification_v1_services_gateway_v1_CancelDigestEventRequest",
      "responseSchema": "notification_v1_CancelDigestEventResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Digest event cancellation result",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getPreferences",
      "operationId": "getPreferences",
      "bundle": "notifications.yaml",
      "title": "Get notification preferences",
      "description": "Returns the authenticated user's notification preferences, including per-channel and per-category settings.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage notification preferences](/core-platform/notifications/preferences)",
      "slug": "/api/notifications/get-preferences",
      "method": "POST",
      "path": "/api/v1/notifications/get-preferences",
      "requestSchema": "notification_v1_services_gateway_v1_GetPreferencesRequest",
      "responseSchema": "notification_v1_GetPreferencesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Preferences retrieved successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:updateGlobalPreference",
      "operationId": "updateGlobalPreference",
      "bundle": "notifications.yaml",
      "title": "Update global notification preferences",
      "description": "Updates the subscriber's global (all-workflow) channel toggles. Omitted channels are left unchanged.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage notification preferences](/core-platform/notifications/preferences)",
      "slug": "/api/notifications/update-global-preference",
      "method": "POST",
      "path": "/api/v1/notifications/update-global-preference",
      "requestSchema": "notification_v1_services_gateway_v1_UpdateGlobalPreferenceRequest",
      "responseSchema": "google_protobuf_Empty",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Global preference updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:updateWorkflowPreference",
      "operationId": "updateWorkflowPreference",
      "bundle": "notifications.yaml",
      "title": "Update per-workflow notification preferences",
      "description": "Updates the subscriber's channel toggles for a single workflow. Omitted channels are left unchanged.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage notification preferences](/core-platform/notifications/preferences)",
      "slug": "/api/notifications/update-workflow-preference",
      "method": "POST",
      "path": "/api/v1/notifications/update-workflow-preference",
      "requestSchema": "notification_v1_services_gateway_v1_UpdateWorkflowPreferenceRequestRequest",
      "responseSchema": "google_protobuf_Empty",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Workflow preference updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:bulkUpdatePreferences",
      "operationId": "bulkUpdatePreferences",
      "bundle": "notifications.yaml",
      "title": "Bulk-update per-workflow preferences",
      "description": "Updates channel toggles for multiple workflows in a single request.\n\nUpdates can partially apply before a later failure. Re-read preferences and retry only unresolved changes; a request failure does not imply an atomic rollback.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Manage notification preferences](/core-platform/notifications/preferences) · [Preferences and channel inheritance](/api/notifications/preferences)",
      "slug": "/api/notifications/bulk-update-preferences",
      "method": "POST",
      "path": "/api/v1/notifications/bulk-update-preferences",
      "requestSchema": "notification_v1_services_gateway_v1_BulkUpdatePreferencesRequest",
      "responseSchema": "notification_v1_BulkUpdatePreferencesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Preferences bulk-updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:updateSubscriberData",
      "operationId": "updateSubscriberData",
      "bundle": "notifications.yaml",
      "title": "Update subscriber profile data",
      "description": "Updates the subscriber's profile data including name, email, phone, locale, and custom metadata.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/update-subscriber-data",
      "method": "POST",
      "path": "/api/v1/notifications/manage/update-subscriber-data",
      "requestSchema": "notification_v1_services_gateway_v1_UpdateSubscriberDataRequest",
      "responseSchema": "notification_v1_UpdateSubscriberDataResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Subscriber data updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getSubscriber",
      "operationId": "getSubscriber",
      "bundle": "notifications.yaml",
      "title": "Get the caller's subscriber profile",
      "description": "Returns the subscriber profile for the authenticated caller, including channel registrations and notification preferences.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/get-subscriber",
      "method": "POST",
      "path": "/api/v1/notifications/manage/get-subscriber",
      "requestSchema": "notification_v1_services_gateway_v1_GetSubscriberRequest",
      "responseSchema": "notification_v1_GetSubscriberResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Subscriber profile returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:deleteSubscriber",
      "operationId": "deleteSubscriber",
      "bundle": "notifications.yaml",
      "title": "Delete the caller's subscriber profile",
      "description": "Requests deletion of the authenticated beneficiary's subscriber at the configured provider. An absent subscriber is an idempotent success.\n\nInspect nested `status.acknowledged`. A missing [`status`](/api/notifications/delete-subscriber#response-field-status) is unknown: the current handler can return an empty HTTP 200 response on configuration, network or provider errors. Reconcile that outcome instead of declaring cleanup complete. Provider acknowledgment does not certify complete erasure of queued work, remote copies or platform records.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/delete-subscriber",
      "method": "POST",
      "path": "/api/v1/notifications/manage/delete-subscriber",
      "requestSchema": "notification_v1_services_gateway_v1_DeleteSubscriberRequest",
      "responseSchema": "notification_v1_DeleteSubscriberResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Provider acknowledgment when present; HTTP success alone does not confirm deletion.",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:createSubscriber",
      "operationId": "createSubscriber",
      "bundle": "notifications.yaml",
      "title": "Create a notification subscriber",
      "description": "Creates a new subscriber profile in the notification system. The subscriber ID is used to target notifications and manage preferences.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/create-subscriber",
      "method": "POST",
      "path": "/api/v1/notifications/manage/create-subscriber",
      "requestSchema": "notification_v1_services_gateway_v1_CreateSubscriberRequest",
      "responseSchema": "notification_v1_CreateSubscriberResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Subscriber created",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:listSubscribers",
      "operationId": "listSubscribers",
      "bundle": "notifications.yaml",
      "title": "List all subscribers",
      "description": "Returns a paginated list of all subscriber profiles in the notification system.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.",
      "slug": "/api/notifications/list-subscribers",
      "method": "POST",
      "path": "/api/v1/notifications/manage/list-subscribers",
      "requestSchema": "notification_v1_services_gateway_v1_ListSubscribersRequest",
      "responseSchema": "notification_v1_ListSubscribersResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Subscribers listed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getDeliveryStatus",
      "operationId": "getDeliveryStatus",
      "bundle": "notifications.yaml",
      "title": "Get delivery status of a notification",
      "description": "Returns the current delivery status and metadata for a specific notification transaction, including provider-level details and timestamps.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/get-delivery-status",
      "method": "POST",
      "path": "/api/v1/notifications/manage/get-delivery-status",
      "requestSchema": "notification_v1_services_gateway_v1_GetDeliveryStatusRequest",
      "responseSchema": "notification_v1_GetDeliveryStatusResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Delivery status returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getNotificationActivity",
      "operationId": "getNotificationActivity",
      "bundle": "notifications.yaml",
      "title": "Get notification activity log",
      "description": "Returns provider activity pages for diagnosing delivery across recipients. Provider activity can lag delivery and is not a complete authorization or business-outcome audit. Use a bounded time window to inspect failures, and keep successful recipients usable while you investigate.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration) · [Preferences and channel inheritance](/api/notifications/preferences)",
      "slug": "/api/notifications/get-notification-activity",
      "method": "POST",
      "path": "/api/v1/notifications/manage/get-notification-activity",
      "requestSchema": "notification_v1_services_gateway_v1_GetNotificationActivityRequest",
      "responseSchema": "notification_v1_GetNotificationActivityResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Activity log returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated personal notification inbox and preferences. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: App user, Tenant backend. Authenticated personal notification inbox and preferences.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:configureProvider",
      "operationId": "configureProvider",
      "bundle": "notifications.yaml",
      "title": "Configure a notification provider",
      "description": "Configures credentials and activation state for a notification provider (e.g., FCM, SendGrid, Twilio).\n\nUses **upsert** semantics: if an active integration already exists for the specified provider type, it updates the existing integration in place (preserving its ID and subscriber linkages). If no active integration exists, a new one is created.\n\nThe current read-then-upsert path does not establish atomic uniqueness under concurrent configuration. Credentials are sensitive and should stay in trusted backend tooling; the API shape is not proof that they bypass all internal journals or diagnostics.\n\n### Provider configuration outcomes\n\nMultiple active integrations of the same type return `409 Conflict` and need support resolution. After a credential change, test delivery to an already registered device. [Provider status](/api/notifications/get-providers) alone does not prove arrival.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/configure-provider",
      "method": "POST",
      "path": "/api/v1/notifications/manage/configure-provider",
      "requestSchema": "notification_v1_services_gateway_v1_ConfigureProviderRequest",
      "responseSchema": "notification_v1_ConfigureProviderResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Provider configured (created or updated)",
      "requestBodyRequired": true,
      "errors": {
        "409": {
          "description": "Multiple active connections exist for this provider type. Contact your Travila operator to resolve the conflict before retrying."
        }
      },
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getProviders",
      "operationId": "getProviders",
      "bundle": "notifications.yaml",
      "title": "List configured providers",
      "description": "Returns active configured notification providers and their integration identifiers. Inactive providers are omitted.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.",
      "slug": "/api/notifications/get-providers",
      "method": "POST",
      "path": "/api/v1/notifications/manage/get-providers",
      "requestSchema": "notification_v1_services_gateway_v1_GetProvidersRequest",
      "responseSchema": "notification_v1_GetProvidersResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Providers listed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:createWorkflow",
      "operationId": "createWorkflow",
      "bundle": "notifications.yaml",
      "title": "Create a notification workflow",
      "description": "Creates a new notification workflow definition with steps, channel configuration, and preference settings.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/create-workflow",
      "method": "POST",
      "path": "/api/v1/notifications/manage/create-workflow",
      "requestSchema": "notification_v1_services_gateway_v1_CreateWorkflowRequest",
      "responseSchema": "notification_v1_CreateWorkflowResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Workflow created",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:updateWorkflow",
      "operationId": "updateWorkflow",
      "bundle": "notifications.yaml",
      "title": "Update an existing notification workflow",
      "description": "Updates the identified workflow using the supplied definition.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/update-workflow",
      "method": "POST",
      "path": "/api/v1/notifications/manage/update-workflow",
      "requestSchema": "notification_v1_services_gateway_v1_UpdateWorkflowRequest",
      "responseSchema": "notification_v1_UpdateWorkflowResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Workflow updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getWorkflow",
      "operationId": "getWorkflow",
      "bundle": "notifications.yaml",
      "title": "Get a notification workflow",
      "description": "Returns the full workflow definition and metadata for the supplied workflow ID. A trigger identifier alone does not select the workflow.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/get-workflow",
      "method": "POST",
      "path": "/api/v1/notifications/manage/get-workflow",
      "requestSchema": "notification_v1_services_gateway_v1_GetWorkflowRequest",
      "responseSchema": "notification_v1_GetWorkflowResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Workflow returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:listWorkflows",
      "operationId": "listWorkflows",
      "bundle": "notifications.yaml",
      "title": "List notification workflows",
      "description": "Returns a paginated list of all notification workflows with summary information.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/list-workflows",
      "method": "POST",
      "path": "/api/v1/notifications/manage/list-workflows",
      "requestSchema": "notification_v1_services_gateway_v1_ListWorkflowsRequest",
      "responseSchema": "notification_v1_ListWorkflowsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Workflows listed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:deleteWorkflow",
      "operationId": "deleteWorkflow",
      "bundle": "notifications.yaml",
      "title": "Delete a notification workflow",
      "description": "Deletes a notification workflow. The workflow can be identified by either workflow ID or trigger identifier.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/delete-workflow",
      "method": "POST",
      "path": "/api/v1/notifications/manage/delete-workflow",
      "requestSchema": "notification_v1_services_gateway_v1_DeleteWorkflowRequest",
      "responseSchema": "notification_v1_DeleteWorkflowResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Workflow deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:getPendingChanges",
      "operationId": "getPendingChanges",
      "bundle": "notifications.yaml",
      "title": "Get pending workflow changes",
      "description": "Returns pending workflow edits in the notification provider’s development configuration. These provider environments do not create separate Travila projects or test/live isolation.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/get-pending-changes",
      "method": "POST",
      "path": "/api/v1/notifications/manage/get-pending-changes",
      "requestSchema": "notification_v1_services_gateway_v1_GetPendingChangesRequest",
      "responseSchema": "notification_v1_GetPendingChangesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Pending changes returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:promoteChange",
      "operationId": "promoteChange",
      "bundle": "notifications.yaml",
      "title": "Promote a single workflow change",
      "description": "Promotes one staged workflow change to the notification provider’s live configuration by changeId.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/promote-change",
      "method": "POST",
      "path": "/api/v1/notifications/manage/promote-change",
      "requestSchema": "notification_v1_services_gateway_v1_PromoteChangeRequest",
      "responseSchema": "notification_v1_PromoteChangeResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Change promoted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "notifications:promoteAllChanges",
      "operationId": "promoteAllChanges",
      "bundle": "notifications.yaml",
      "title": "Promote all pending workflow changes",
      "description": "Promotes staged workflow changes to the notification provider’s live configuration. Supply changeIds to select changes; omitting it or sending an empty array selects all pending changes. Inspect per-change errors alongside the successful results.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Welcome a new user with an in-app message](/core-platform/notifications/administration)",
      "slug": "/api/notifications/promote-all-changes",
      "method": "POST",
      "path": "/api/v1/notifications/manage/promote-all-changes",
      "requestSchema": "notification_v1_services_gateway_v1_PromoteAllChangesRequest",
      "responseSchema": "notification_v1_PromoteAllChangesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Changes promoted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require beneficiary ownership; restrict tenant administration exceptions to authorized tenant backends and keep supplied subscriber IDs from becoming trusted identity. Intended audience: Tenant backend. Tenant notification administration or multi-recipient action; backend authorization is required, not merely a person subject.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "connected-apps:pipedreamCreateConnectToken",
      "operationId": "pipedreamCreateConnectToken",
      "bundle": "connected-apps.yaml",
      "title": "Start connecting an app",
      "description": "Creates a hosted connection attempt targeted by `appSlug` and returns its complete connect URL. Validate the parsed URL against the expected provider origin and path for the current attempt, then use it without reconstructing its token query. Treat the URL as a short-lived credential; read `expiresAt`, avoid caching/sharing it, and create a fresh attempt when appropriate. Do not assume a specific lifetime or single-use property unless qualified for the deployed provider.\n\nFor embedding, configure exact `allowedOrigins`. Correlate the returned state with the attempt initiated by this user; returned state is not authority. A redirect does not establish success: reconcile `list-accounts` and provider errors.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps)",
      "slug": "/api/connected-apps/pipedream-create-connect-token",
      "method": "POST",
      "path": "/api/v1/integrations/pipedream/create-connect-token",
      "requestSchema": "integrations_v1_services_gateway_v1_PipedreamCreateConnectTokenRequest",
      "responseSchema": "integrations_v1_services_gateway_v1_PipedreamCreateConnectTokenResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Connect token and hosted link",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person integration self-service or authorized backend delegation. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person integration self-service or authorized backend delegation. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive the subject rather than accept an external-user identity, verify delegated action/account ownership, and maintain the platform integration boundary. Intended audience: App user, Tenant backend. Authenticated person integration self-service or authorized backend delegation.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "connected-apps:pipedreamListApps",
      "operationId": "pipedreamListApps",
      "bundle": "connected-apps.yaml",
      "title": "List connectable apps",
      "description": "Lists the apps a user can connect, newest catalog first unless you sort. Use this to build an app picker.\n\nThis is public catalog data. It does not tell you what the caller has already connected; use [`list-accounts`](/api/connected-apps/pipedream-list-accounts-for-current-user) for that.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized shared platform action.\n\nUse this in a guide: [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps)",
      "slug": "/api/connected-apps/pipedream-list-apps",
      "method": "POST",
      "path": "/api/v1/integrations/pipedream/list-apps",
      "requestSchema": "integrations_v1_services_gateway_v1_PipedreamListAppsRequest",
      "responseSchema": "integrations_v1_services_gateway_v1_PipedreamListAppsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "A page of apps",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Nobody",
        "data_scope": "Global",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated discovery of shared integration reference data; account-bound dynamic results require separate owner checks. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated discovery of shared integration reference data; account-bound dynamic results require separate owner checks. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized shared platform action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive the subject rather than accept an external-user identity, verify delegated action/account ownership, and maintain the platform integration boundary. Intended audience: App user, Tenant backend. Authenticated discovery of shared integration reference data; account-bound dynamic results require separate owner checks.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "connected-apps:pipedreamRetrieveApp",
      "operationId": "pipedreamRetrieveApp",
      "bundle": "connected-apps.yaml",
      "title": "Retrieve one app by slug",
      "description": "Returns a single app by its `nameSlug` — the stable identifier used everywhere else in this API (`github`, `slack`, `google_calendar`). Use it to render an app detail page without paging the whole catalog.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized shared platform action.\n\nUse this in a guide: [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps)",
      "slug": "/api/connected-apps/pipedream-retrieve-app",
      "method": "POST",
      "path": "/api/v1/integrations/pipedream/retrieve-app",
      "requestSchema": "integrations_v1_services_gateway_v1_PipedreamRetrieveAppRequest",
      "responseSchema": "integrations_v1_services_gateway_v1_PipedreamRetrieveAppResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "The app",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Nobody",
        "data_scope": "Global",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated discovery of shared integration reference data; account-bound dynamic results require separate owner checks. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated discovery of shared integration reference data; account-bound dynamic results require separate owner checks. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized shared platform action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive the subject rather than accept an external-user identity, verify delegated action/account ownership, and maintain the platform integration boundary. Intended audience: App user, Tenant backend. Authenticated discovery of shared integration reference data; account-bound dynamic results require separate owner checks.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "connected-apps:pipedreamListAppCategories",
      "operationId": "pipedreamListAppCategories",
      "bundle": "connected-apps.yaml",
      "title": "List app categories",
      "description": "Lists the categories apps are grouped under (\"Developer Tools\", \"Communication\"). Feed the returned `id` values into `categoryIds` on [`list-apps`](/api/connected-apps/pipedream-list-apps) to filter a picker by category.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized shared platform action.\n\nUse this in a guide: [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps)",
      "slug": "/api/connected-apps/pipedream-list-app-categories",
      "method": "POST",
      "path": "/api/v1/integrations/pipedream/list-app-categories",
      "requestSchema": "integrations_v1_services_gateway_v1_PipedreamListAppCategoriesRequest",
      "responseSchema": "integrations_v1_services_gateway_v1_PipedreamListAppCategoriesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "A page of categories",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Nobody",
        "data_scope": "Global",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated discovery of shared integration reference data; account-bound dynamic results require separate owner checks. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated discovery of shared integration reference data; account-bound dynamic results require separate owner checks. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized shared platform action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive the subject rather than accept an external-user identity, verify delegated action/account ownership, and maintain the platform integration boundary. Intended audience: App user, Tenant backend. Authenticated discovery of shared integration reference data; account-bound dynamic results require separate owner checks.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "connected-apps:pipedreamListAccountsForCurrentUser",
      "operationId": "pipedreamListAccountsForCurrentUser",
      "bundle": "connected-apps.yaml",
      "title": "List the caller's connected accounts",
      "description": "Lists connected accounts for the authenticated beneficiary. An app can have multiple accounts; select the intended account ID explicitly. `healthy === true` reflects the returned provider connection state, not current action consent or authorization. An unhealthy account can need reconnection. The response does not directly return the stored third-party credential. Continue using provider pagination rather than treating an empty data page alone as exhaustion.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps)",
      "slug": "/api/connected-apps/pipedream-list-accounts-for-current-user",
      "method": "POST",
      "path": "/api/v1/integrations/pipedream/list-accounts",
      "requestSchema": "integrations_v1_services_gateway_v1_PipedreamListAccountsForCurrentUserRequest",
      "responseSchema": "integrations_v1_services_gateway_v1_PipedreamListAccountsForCurrentUserResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "A page of the caller's connected accounts",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person integration self-service or authorized backend delegation. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person integration self-service or authorized backend delegation. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive the subject rather than accept an external-user identity, verify delegated action/account ownership, and maintain the platform integration boundary. Intended audience: App user, Tenant backend. Authenticated person integration self-service or authorized backend delegation.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "connected-apps:pipedreamDeleteAccountForCurrentUser",
      "operationId": "pipedreamDeleteAccountForCurrentUser",
      "bundle": "connected-apps.yaml",
      "title": "Disconnect one account",
      "description": "Disconnects the specified account belonging to the authenticated beneficiary. An account outside that scope is returned as not found. Reconcile uncertain responses before recreating it. Disconnection does not undo already dispatched actions or establish that all provider sessions and copies have been erased immediately.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps)",
      "slug": "/api/connected-apps/pipedream-delete-account-for-current-user",
      "method": "POST",
      "path": "/api/v1/integrations/pipedream/delete-account",
      "requestSchema": "integrations_v1_services_gateway_v1_PipedreamDeleteAccountForCurrentUserRequest",
      "responseSchema": "integrations_v1_services_gateway_v1_PipedreamDeleteAccountForCurrentUserResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Account disconnected",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person integration self-service or authorized backend delegation. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person integration self-service or authorized backend delegation. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive the subject rather than accept an external-user identity, verify delegated action/account ownership, and maintain the platform integration boundary. Intended audience: App user, Tenant backend. Authenticated person integration self-service or authorized backend delegation.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "connected-apps:pipedreamDeleteExternalUserForCurrentUser",
      "operationId": "pipedreamDeleteExternalUserForCurrentUser",
      "bundle": "connected-apps.yaml",
      "title": "Delete the caller's integration data entirely",
      "description": "Requests irreversible deletion of the authenticated beneficiary's Pipedream external user and associated connections. Use it as one step of offboarding, not as proof of erasure across every provider and backup. Reconnection creates new connection state and requires fresh user authorization.\n\n[`accountsDeleted`](/api/connected-apps/pipedream-delete-external-user-for-current-user#response-field-accountsdeleted) is counted immediately before deletion and can differ under concurrent changes; it is not a per-account deletion receipt. Preserve your application's record of cleanup and unresolved external actions.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps)",
      "slug": "/api/connected-apps/pipedream-delete-external-user-for-current-user",
      "method": "POST",
      "path": "/api/v1/integrations/pipedream/delete-external-user",
      "requestSchema": "integrations_v1_services_gateway_v1_PipedreamDeleteExternalUserForCurrentUserRequest",
      "responseSchema": "integrations_v1_services_gateway_v1_PipedreamDeleteExternalUserForCurrentUserResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "User and all their connected accounts deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person integration self-service or authorized backend delegation. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person integration self-service or authorized backend delegation. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive the subject rather than accept an external-user identity, verify delegated action/account ownership, and maintain the platform integration boundary. Intended audience: App user, Tenant backend. Authenticated person integration self-service or authorized backend delegation.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "connected-apps:pipedreamProxyForCurrentUser",
      "operationId": "pipedreamProxyForCurrentUser",
      "bundle": "connected-apps.yaml",
      "title": "Call a connected app's API as the user",
      "description": "Makes an HTTP request through the selected connected account. The account must belong to the effective user and the destination is subject to the provider's allowed-domain rules. Those checks do not replace permission for the requested action. Each upstream app defines its own payload.\n\n### Upstream response handling\n\nRead the returned upstream [`status`](/api/connected-apps/pipedream-proxy-for-current-user#response-field-status) before treating the operation as successful: Travila can return HTTP 200 while the app's response contains a 404. Upstream headers and the [`body`](/api/connected-apps/pipedream-proxy-for-current-user#response-field-body) are returned as data, including on non-success status codes. Decode the body according to its content type; headers and bodies can contain third-party sensitive data.\n\nRedirects are returned, not followed. Treat `Location` as untrusted: it need not be a signed or credential-free download URL. Validate the destination before opening it and never forward platform or account credentials to it.\n\nThe provider request timeout is 30 seconds. Page large results or use an appropriate provider download flow to stay within the response-body limit. A timeout can leave the external action's outcome unknown; check that action before retrying.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps)",
      "slug": "/api/connected-apps/pipedream-proxy-for-current-user",
      "method": "POST",
      "path": "/api/v1/integrations/pipedream/proxy",
      "requestSchema": "integrations_v1_services_gateway_v1_PipedreamProxyForCurrentUserRequest",
      "responseSchema": "integrations_v1_services_gateway_v1_PipedreamProxyForCurrentUserResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "The upstream response, whatever its status",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person integration self-service or authorized backend delegation. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person integration self-service or authorized backend delegation. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive the subject rather than accept an external-user identity, verify delegated action/account ownership, and maintain the platform integration boundary. Intended audience: App user, Tenant backend. Authenticated person integration self-service or authorized backend delegation.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "webhooks:createWebhookEndpoint",
      "operationId": "createWebhookEndpoint",
      "bundle": "webhooks.yaml",
      "title": "Create a webhook endpoint",
      "description": "Creates an endpoint and optionally attempts a subscription when eventTypes is provided. These provider writes are separate and can partially succeed. Reconcile the endpoint and subscriptions before retrying to avoid orphaned endpoints or duplicate deliveries.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Tenant request context, Tenant-scoped webhook ownership.\n\nUse this in a guide: [Event catalog](/api/events) · [Automate recurring agent work](/core-platform/scheduling/build-scheduled-agents) · [Receive a completed order summary in your backend](/integrations/webhooks/endpoints)",
      "slug": "/api/webhooks/create-webhook-endpoint",
      "method": "POST",
      "path": "/api/v1/webhooks/create-endpoint",
      "requestSchema": "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointRequest",
      "responseSchema": "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Endpoint created successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering its own tenant webhooks, without switching to a beneficiary identity. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Tenant request context",
            "mode": "Enforcing",
            "meaning": "<p>Requires a nonblank tenant context. Requests recognized by the gateway as public ingress derive tenant and optional user from ingress identity headers and ignore body context. Headerless calls may supply tenant, subject and caller context, with caller normalization; header absence itself does not authenticate an internal caller. A user is optional. Roles are logging/audit metadata and RBAC is not enforced.</p>"
          },
          {
            "condition_name": "Tenant-scoped webhook ownership",
            "mode": "Enforcing",
            "meaning": "<p>WebhookService scopes these endpoint, subscription and delivery operations to the compound owner formed from the accepted tenant and fixed default project. Creation stamps or binds ownership, lists restrict to that owner, and addressed existing resources are checked through endpoint owner metadata or owner-scoped registry lookup. Delivery lists scope to owned live or retained deleted endpoint IDs; delivery retry checks endpoint owner metadata. This is tenant scoping relative to the accepted context, not authenticated authority for headerless supplied tenants, project-level grants or RBAC.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "webhooks:listWebhookEndpoints",
      "operationId": "listWebhookEndpoints",
      "bundle": "webhooks.yaml",
      "title": "List webhook endpoints",
      "description": "Returns a paginated list of all webhook endpoints belonging to the authenticated tenant.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Tenant request context, Tenant-scoped webhook ownership.\n\nUse this in a guide: [Recover a missing backend update](/integrations/webhooks/deliveries) · [Receive a completed order summary in your backend](/integrations/webhooks/endpoints)",
      "slug": "/api/webhooks/list-webhook-endpoints",
      "method": "POST",
      "path": "/api/v1/webhooks/list-endpoints",
      "requestSchema": "integrations_v1_services_webhookgateway_v1_ListWebhookEndpointsRequest",
      "responseSchema": "integrations_v1_services_webhookgateway_v1_ListWebhookEndpointsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Endpoints listed successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering its own tenant webhooks, without switching to a beneficiary identity. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Tenant request context",
            "mode": "Enforcing",
            "meaning": "<p>Requires a nonblank tenant context. Requests recognized by the gateway as public ingress derive tenant and optional user from ingress identity headers and ignore body context. Headerless calls may supply tenant, subject and caller context, with caller normalization; header absence itself does not authenticate an internal caller. A user is optional. Roles are logging/audit metadata and RBAC is not enforced.</p>"
          },
          {
            "condition_name": "Tenant-scoped webhook ownership",
            "mode": "Enforcing",
            "meaning": "<p>WebhookService scopes these endpoint, subscription and delivery operations to the compound owner formed from the accepted tenant and fixed default project. Creation stamps or binds ownership, lists restrict to that owner, and addressed existing resources are checked through endpoint owner metadata or owner-scoped registry lookup. Delivery lists scope to owned live or retained deleted endpoint IDs; delivery retry checks endpoint owner metadata. This is tenant scoping relative to the accepted context, not authenticated authority for headerless supplied tenants, project-level grants or RBAC.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "webhooks:updateWebhookEndpoint",
      "operationId": "updateWebhookEndpoint",
      "bundle": "webhooks.yaml",
      "title": "Update a webhook endpoint",
      "description": "Reads the endpoint and overlays nonempty name, URL and description before sending the provider a replacement. Empty strings do not clear fields. There is no public revision precondition, so concurrent changes can overwrite one another.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Tenant request context, Tenant-scoped webhook ownership.\n\nUse this in a guide: [Recover a missing backend update](/integrations/webhooks/deliveries) · [Receive a completed order summary in your backend](/integrations/webhooks/endpoints)",
      "slug": "/api/webhooks/update-webhook-endpoint",
      "method": "POST",
      "path": "/api/v1/webhooks/update-endpoint",
      "requestSchema": "integrations_v1_services_webhookgateway_v1_UpdateWebhookEndpointRequest",
      "responseSchema": "integrations_v1_services_webhookgateway_v1_UpdateWebhookEndpointResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Endpoint updated successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering its own tenant webhooks, without switching to a beneficiary identity. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Tenant request context",
            "mode": "Enforcing",
            "meaning": "<p>Requires a nonblank tenant context. Requests recognized by the gateway as public ingress derive tenant and optional user from ingress identity headers and ignore body context. Headerless calls may supply tenant, subject and caller context, with caller normalization; header absence itself does not authenticate an internal caller. A user is optional. Roles are logging/audit metadata and RBAC is not enforced.</p>"
          },
          {
            "condition_name": "Tenant-scoped webhook ownership",
            "mode": "Enforcing",
            "meaning": "<p>WebhookService scopes these endpoint, subscription and delivery operations to the compound owner formed from the accepted tenant and fixed default project. Creation stamps or binds ownership, lists restrict to that owner, and addressed existing resources are checked through endpoint owner metadata or owner-scoped registry lookup. Delivery lists scope to owned live or retained deleted endpoint IDs; delivery retry checks endpoint owner metadata. This is tenant scoping relative to the accepted context, not authenticated authority for headerless supplied tenants, project-level grants or RBAC.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "webhooks:deleteWebhookEndpoint",
      "operationId": "deleteWebhookEndpoint",
      "bundle": "webhooks.yaml",
      "title": "Delete a webhook endpoint",
      "description": "Deletes the endpoint and its associated provider subscriptions. Already dispatched deliveries can still reach the receiver; deletion does not attest to erasure of historical deliveries or backups.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Tenant request context, Tenant-scoped webhook ownership.\n\nUse this in a guide: [Receive a completed order summary in your backend](/integrations/webhooks/endpoints)",
      "slug": "/api/webhooks/delete-webhook-endpoint",
      "method": "POST",
      "path": "/api/v1/webhooks/delete-endpoint",
      "requestSchema": "integrations_v1_services_webhookgateway_v1_DeleteWebhookEndpointRequest",
      "responseSchema": "integrations_v1_services_webhookgateway_v1_DeleteWebhookEndpointResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Endpoint deleted successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering its own tenant webhooks, without switching to a beneficiary identity. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Tenant request context",
            "mode": "Enforcing",
            "meaning": "<p>Requires a nonblank tenant context. Requests recognized by the gateway as public ingress derive tenant and optional user from ingress identity headers and ignore body context. Headerless calls may supply tenant, subject and caller context, with caller normalization; header absence itself does not authenticate an internal caller. A user is optional. Roles are logging/audit metadata and RBAC is not enforced.</p>"
          },
          {
            "condition_name": "Tenant-scoped webhook ownership",
            "mode": "Enforcing",
            "meaning": "<p>WebhookService scopes these endpoint, subscription and delivery operations to the compound owner formed from the accepted tenant and fixed default project. Creation stamps or binds ownership, lists restrict to that owner, and addressed existing resources are checked through endpoint owner metadata or owner-scoped registry lookup. Delivery lists scope to owned live or retained deleted endpoint IDs; delivery retry checks endpoint owner metadata. This is tenant scoping relative to the accepted context, not authenticated authority for headerless supplied tenants, project-level grants or RBAC.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "webhooks:createWebhookSubscription",
      "operationId": "createWebhookSubscription",
      "bundle": "webhooks.yaml",
      "title": "Create a webhook subscription",
      "description": "Creates a new event subscription on an existing webhook endpoint. The subscription filters events by the specified event types and delivers matching events to the endpoint URL.\n\n### One subscription per endpoint\n\nOnly one live subscription is allowed per endpoint; a second fails with `ALREADY_EXISTS`. There is no public update-subscription operation. [Delete the old subscription](/api/webhooks/delete-webhook-subscription) and create its replacement when a delivery gap is acceptable.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Tenant request context, Tenant-scoped webhook ownership.\n\nUse this in a guide: [Event catalog](/api/events) · [Receive a completed order summary in your backend](/integrations/webhooks/endpoints)",
      "slug": "/api/webhooks/create-webhook-subscription",
      "method": "POST",
      "path": "/api/v1/webhooks/create-subscription",
      "requestSchema": "integrations_v1_services_webhookgateway_v1_CreateWebhookSubscriptionRequest",
      "responseSchema": "integrations_v1_services_webhookgateway_v1_CreateWebhookSubscriptionResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Subscription created successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering its own tenant webhooks, without switching to a beneficiary identity. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Tenant request context",
            "mode": "Enforcing",
            "meaning": "<p>Requires a nonblank tenant context. Requests recognized by the gateway as public ingress derive tenant and optional user from ingress identity headers and ignore body context. Headerless calls may supply tenant, subject and caller context, with caller normalization; header absence itself does not authenticate an internal caller. A user is optional. Roles are logging/audit metadata and RBAC is not enforced.</p>"
          },
          {
            "condition_name": "Tenant-scoped webhook ownership",
            "mode": "Enforcing",
            "meaning": "<p>WebhookService scopes these endpoint, subscription and delivery operations to the compound owner formed from the accepted tenant and fixed default project. Creation stamps or binds ownership, lists restrict to that owner, and addressed existing resources are checked through endpoint owner metadata or owner-scoped registry lookup. Delivery lists scope to owned live or retained deleted endpoint IDs; delivery retry checks endpoint owner metadata. This is tenant scoping relative to the accepted context, not authenticated authority for headerless supplied tenants, project-level grants or RBAC.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "webhooks:listWebhookSubscriptions",
      "operationId": "listWebhookSubscriptions",
      "bundle": "webhooks.yaml",
      "title": "List webhook subscriptions",
      "description": "Returns a paginated list of webhook subscriptions. Optionally filter by endpoint ID.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Tenant request context, Tenant-scoped webhook ownership.\n\nUse this in a guide: [Recover a missing backend update](/integrations/webhooks/deliveries) · [Receive a completed order summary in your backend](/integrations/webhooks/endpoints)",
      "slug": "/api/webhooks/list-webhook-subscriptions",
      "method": "POST",
      "path": "/api/v1/webhooks/list-subscriptions",
      "requestSchema": "integrations_v1_services_webhookgateway_v1_ListWebhookSubscriptionsRequest",
      "responseSchema": "integrations_v1_services_webhookgateway_v1_ListWebhookSubscriptionsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Subscriptions listed successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering its own tenant webhooks, without switching to a beneficiary identity. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Tenant request context",
            "mode": "Enforcing",
            "meaning": "<p>Requires a nonblank tenant context. Requests recognized by the gateway as public ingress derive tenant and optional user from ingress identity headers and ignore body context. Headerless calls may supply tenant, subject and caller context, with caller normalization; header absence itself does not authenticate an internal caller. A user is optional. Roles are logging/audit metadata and RBAC is not enforced.</p>"
          },
          {
            "condition_name": "Tenant-scoped webhook ownership",
            "mode": "Enforcing",
            "meaning": "<p>WebhookService scopes these endpoint, subscription and delivery operations to the compound owner formed from the accepted tenant and fixed default project. Creation stamps or binds ownership, lists restrict to that owner, and addressed existing resources are checked through endpoint owner metadata or owner-scoped registry lookup. Delivery lists scope to owned live or retained deleted endpoint IDs; delivery retry checks endpoint owner metadata. This is tenant scoping relative to the accepted context, not authenticated authority for headerless supplied tenants, project-level grants or RBAC.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "webhooks:deleteWebhookSubscription",
      "operationId": "deleteWebhookSubscription",
      "bundle": "webhooks.yaml",
      "title": "Delete a webhook subscription",
      "description": "Deletes the subscription without deleting its endpoint. Pending/in-flight provider deliveries and retained history require separate handling; deletion is not remote-effect rollback.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Tenant request context, Tenant-scoped webhook ownership.",
      "slug": "/api/webhooks/delete-webhook-subscription",
      "method": "POST",
      "path": "/api/v1/webhooks/delete-subscription",
      "requestSchema": "integrations_v1_services_webhookgateway_v1_DeleteWebhookSubscriptionRequest",
      "responseSchema": "integrations_v1_services_webhookgateway_v1_DeleteWebhookSubscriptionResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Subscription deleted successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering its own tenant webhooks, without switching to a beneficiary identity. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Tenant request context",
            "mode": "Enforcing",
            "meaning": "<p>Requires a nonblank tenant context. Requests recognized by the gateway as public ingress derive tenant and optional user from ingress identity headers and ignore body context. Headerless calls may supply tenant, subject and caller context, with caller normalization; header absence itself does not authenticate an internal caller. A user is optional. Roles are logging/audit metadata and RBAC is not enforced.</p>"
          },
          {
            "condition_name": "Tenant-scoped webhook ownership",
            "mode": "Enforcing",
            "meaning": "<p>WebhookService scopes these endpoint, subscription and delivery operations to the compound owner formed from the accepted tenant and fixed default project. Creation stamps or binds ownership, lists restrict to that owner, and addressed existing resources are checked through endpoint owner metadata or owner-scoped registry lookup. Delivery lists scope to owned live or retained deleted endpoint IDs; delivery retry checks endpoint owner metadata. This is tenant scoping relative to the accepted context, not authenticated authority for headerless supplied tenants, project-level grants or RBAC.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "webhooks:listWebhookDeliveries",
      "operationId": "listWebhookDeliveries",
      "bundle": "webhooks.yaml",
      "title": "List webhook event deliveries",
      "description": "Returns paginated delivery records. A record is not a complete log of every HTTP attempt.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Tenant request context, Tenant-scoped webhook ownership.\n\nUse this in a guide: [Recover a missing backend update](/integrations/webhooks/deliveries)",
      "slug": "/api/webhooks/list-webhook-deliveries",
      "method": "POST",
      "path": "/api/v1/webhooks/list-deliveries",
      "requestSchema": "integrations_v1_services_webhookgateway_v1_ListWebhookDeliveriesRequest",
      "responseSchema": "integrations_v1_services_webhookgateway_v1_ListWebhookDeliveriesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Deliveries listed successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering its own tenant webhooks, without switching to a beneficiary identity. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Tenant request context",
            "mode": "Enforcing",
            "meaning": "<p>Requires a nonblank tenant context. Requests recognized by the gateway as public ingress derive tenant and optional user from ingress identity headers and ignore body context. Headerless calls may supply tenant, subject and caller context, with caller normalization; header absence itself does not authenticate an internal caller. A user is optional. Roles are logging/audit metadata and RBAC is not enforced.</p>"
          },
          {
            "condition_name": "Tenant-scoped webhook ownership",
            "mode": "Enforcing",
            "meaning": "<p>WebhookService scopes these endpoint, subscription and delivery operations to the compound owner formed from the accepted tenant and fixed default project. Creation stamps or binds ownership, lists restrict to that owner, and addressed existing resources are checked through endpoint owner metadata or owner-scoped registry lookup. Delivery lists scope to owned live or retained deleted endpoint IDs; delivery retry checks endpoint owner metadata. This is tenant scoping relative to the accepted context, not authenticated authority for headerless supplied tenants, project-level grants or RBAC.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "webhooks:retryWebhookDelivery",
      "operationId": "retryWebhookDelivery",
      "bundle": "webhooks.yaml",
      "title": "Retry a failed webhook delivery",
      "description": "Re-queues a previously failed or discarded event delivery for another delivery attempt.\n\nA successful response only acknowledges re-queueing. The receiver must deduplicate repeated events and distinguish receipt from completed business work.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Tenant request context, Tenant-scoped webhook ownership.\n\nUse this in a guide: [Recover a missing backend update](/integrations/webhooks/deliveries)",
      "slug": "/api/webhooks/retry-webhook-delivery",
      "method": "POST",
      "path": "/api/v1/webhooks/retry-delivery",
      "requestSchema": "integrations_v1_services_webhookgateway_v1_RetryWebhookDeliveryRequest",
      "responseSchema": "integrations_v1_services_webhookgateway_v1_RetryWebhookDeliveryResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Another attempt requested; inspect delivery status for the outcome",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering its own tenant webhooks, without switching to a beneficiary identity. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Tenant request context",
            "mode": "Enforcing",
            "meaning": "<p>Requires a nonblank tenant context. Requests recognized by the gateway as public ingress derive tenant and optional user from ingress identity headers and ignore body context. Headerless calls may supply tenant, subject and caller context, with caller normalization; header absence itself does not authenticate an internal caller. A user is optional. Roles are logging/audit metadata and RBAC is not enforced.</p>"
          },
          {
            "condition_name": "Tenant-scoped webhook ownership",
            "mode": "Enforcing",
            "meaning": "<p>WebhookService scopes these endpoint, subscription and delivery operations to the compound owner formed from the accepted tenant and fixed default project. Creation stamps or binds ownership, lists restrict to that owner, and addressed existing resources are checked through endpoint owner metadata or owner-scoped registry lookup. Delivery lists scope to owned live or retained deleted endpoint IDs; delivery retry checks endpoint owner metadata. This is tenant scoping relative to the accepted context, not authenticated authority for headerless supplied tenants, project-level grants or RBAC.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:createAgentProfile",
      "operationId": "createAgentProfile",
      "bundle": "agent-profiles.yaml",
      "title": "Create an agent profile",
      "description": "Creates a profile in the caller's project library. A duplicate profile ID fails with `ALREADY_EXISTS`; use [update](/api/agent-profiles/update-agent-profile) to replace an existing profile. The store assigns the initial immutable version. The system prompt must be a valid template and every variable spec needs a unique name; otherwise create fails with `400`.\n\nEnabled profiles are immediately selectable. Disabled profiles are omitted from the selection library, and a direct send naming one fails with `ACTIVE_PROFILE_DISABLED`. Queued messages currently take a different fallback path; see [unusable profiles](/managed-agents/conversations/configuration#when-the-active-profile-cannot-be-used).\n\nUse this in a guide: [Build a reusable assistant profile](/managed-agents/profiles-prompts) · [Keep a model on the providers you choose](/managed-agents/model-controls/provider-pinning)",
      "slug": "/api/agent-profiles/create-agent-profile",
      "method": "POST",
      "path": "/api/v1/agent-profiles/create",
      "requestSchema": "llm_v1_services_agent_profile_v1_CreateAgentProfileRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_CreateAgentProfileResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Profile created; the stored record is echoed back",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Model selection access",
            "mode": "Enforcing",
            "meaning": "<p>Requested models must be eligible for the platform and tenant. Empty model selections are allowed.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:getAgentProfile",
      "operationId": "getAgentProfile",
      "bundle": "agent-profiles.yaml",
      "title": "Get an agent profile",
      "description": "Returns a full profile record at the selected immutable version. A profile or version that never existed returns `NOT_FOUND`.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build a reusable assistant profile](/managed-agents/profiles-prompts)",
      "slug": "/api/agent-profiles/get-agent-profile",
      "method": "POST",
      "path": "/api/v1/agent-profiles/get",
      "requestSchema": "llm_v1_services_agent_profile_v1_GetAgentProfileRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_GetAgentProfileResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Profile returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:listAgentProfiles",
      "operationId": "listAgentProfiles",
      "bundle": "agent-profiles.yaml",
      "title": "List agent profiles",
      "description": "Returns a paginated collection of full profile records for inspection or editing. For a lightweight selection view, use [library](/api/agent-profiles/get-agent-profile-library), which omits runtime configuration.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build a reusable assistant profile](/managed-agents/profiles-prompts)",
      "slug": "/api/agent-profiles/list-agent-profiles",
      "method": "POST",
      "path": "/api/v1/agent-profiles/list",
      "requestSchema": "llm_v1_services_agent_profile_v1_ListAgentProfilesRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_ListAgentProfilesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Page of profiles",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:updateAgentProfile",
      "operationId": "updateAgentProfile",
      "bundle": "agent-profiles.yaml",
      "title": "Update an agent profile",
      "description": "Updates an agent profile. Each successful update appends a new immutable version; the profile ID remains fixed and the store assigns the version.\n\n**Which fields change**\n\nWithout an [`updateMask`](/api/agent-profiles/update-agent-profile#request-field-updatemask), only the fields the supplied [`profile`](/api/agent-profiles/update-agent-profile#request-field-profile) sets change, and inside `generationConfig` only the sub-fields it sets. Nothing left out is cleared, so clearing a field needs a mask. A mask naming fields changes exactly those, clearing a named field the profile leaves unset; to replace the whole profile, name every field. An update that would leave `name` or `whenToUse` empty is refused with `400`, as is one writing a system prompt that is not a valid template or variable specs without unique names.\n\nUse this in a guide: [Build a reusable assistant profile](/managed-agents/profiles-prompts) · [Keep a model on the providers you choose](/managed-agents/model-controls/provider-pinning) · [Reuse and update shared assistant instructions](/managed-agents/profiles-prompts/prompt-fragments)",
      "slug": "/api/agent-profiles/update-agent-profile",
      "method": "POST",
      "path": "/api/v1/agent-profiles/update",
      "requestSchema": "llm_v1_services_agent_profile_v1_UpdateAgentProfileRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_UpdateAgentProfileResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Profile updated; the new stored record is echoed back",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Model selection access",
            "mode": "Enforcing",
            "meaning": "<p>Requested models must be eligible for the platform and tenant. Empty model selections are allowed.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:deleteAgentProfile",
      "operationId": "deleteAgentProfile",
      "bundle": "agent-profiles.yaml",
      "title": "Delete an agent profile",
      "description": "Deletes the profile from the current library without checking whether conversations still reference it. Resolve dependent conversations before deletion.\n\n* Direct sends on conversations still naming it in [`activeProfileId`](/api/conversations/create-thread#request-field-activeprofileid) fail with `ACTIVE_PROFILE_NOT_FOUND`. Select an enabled replacement or restore the profile. A disabled replacement fails with `ACTIVE_PROFILE_DISABLED`. Queued messages can fall back to defaults and log the problem; see [unusable profiles](/managed-agents/conversations/configuration#when-the-active-profile-cannot-be-used).\n* Historical version records remain. Their retention does not prove that every dependent turn remains reproducible.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build a reusable assistant profile](/managed-agents/profiles-prompts)",
      "slug": "/api/agent-profiles/delete-agent-profile",
      "method": "POST",
      "path": "/api/v1/agent-profiles/delete",
      "requestSchema": "llm_v1_services_agent_profile_v1_DeleteAgentProfileRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_DeleteAgentProfileResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Profile deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:getAgentProfileLibrary",
      "operationId": "getAgentProfileLibrary",
      "bundle": "agent-profiles.yaml",
      "title": "Get the profile library",
      "description": "Returns the project's profile-selection library for building a picker. Its selection metadata omits runtime configuration; use [get](/api/agent-profiles/get-agent-profile) to inspect or edit a full profile. This discovery projection neither proves that an autonomous router is active nor guarantees a measured cost or latency improvement.\n\nFor a native conversation, pass the chosen profile ID through `activeProfileId` on thread creation or `setActiveProfileId` when sending a message; Travila loads its configuration. The returned `defaultProfileId` is not applied automatically when `activeProfileId` is empty. Your client must explicitly select its intended profile.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build a reusable assistant profile](/managed-agents/profiles-prompts)",
      "slug": "/api/agent-profiles/get-agent-profile-library",
      "method": "POST",
      "path": "/api/v1/agent-profiles/library",
      "requestSchema": "llm_v1_services_agent_profile_v1_GetAgentProfileLibraryRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_GetAgentProfileLibraryResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Selection metadata for the project",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:listAgentProfileVersions",
      "operationId": "listAgentProfileVersions",
      "bundle": "agent-profiles.yaml",
      "title": "List a profile's versions",
      "description": "Returns stored profile versions newest first. Use a version with get to inspect that profile record. It does not establish what a past turn ran: actual fragment versions, resolved variables, renderer and effective generation settings must also be captured. A profile that never existed returns an empty list.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build a reusable assistant profile](/managed-agents/profiles-prompts)",
      "slug": "/api/agent-profiles/list-agent-profile-versions",
      "method": "POST",
      "path": "/api/v1/agent-profiles/versions",
      "requestSchema": "llm_v1_services_agent_profile_v1_ListAgentProfileVersionsRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_ListAgentProfileVersionsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Version history, descending",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:getPromptFragmentSet",
      "operationId": "getPromptFragmentSet",
      "bundle": "agent-profiles.yaml",
      "title": "Get a fragment set by version",
      "description": "Returns the fragments in a specified project-wide fragment-set version, ordered by fragment ID. Fragment writes advance the set version. A set version reconstructs that stored set, not a complete rendered turn. Current profile and fragment reads are independent and rendering can use the latest set; capture the set actually used alongside variables and effective configuration.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Reuse and update shared assistant instructions](/managed-agents/profiles-prompts/prompt-fragments) · [Profile selection and prompt versions](/api/agent-profiles/selection-and-versioning)",
      "slug": "/api/agent-profiles/get-prompt-fragment-set",
      "method": "POST",
      "path": "/api/v1/prompt-fragments/get-set",
      "requestSchema": "llm_v1_services_agent_profile_v1_GetPromptFragmentSetRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_GetPromptFragmentSetResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Fragments at that set version",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:createPromptFragment",
      "operationId": "createPromptFragment",
      "bundle": "agent-profiles.yaml",
      "title": "Create a prompt fragment",
      "description": "Creates a reusable template block in the caller's project. The fragment ID must be unique within that project. Profiles that include the fragment share the stored text, so a later edit affects every referencing profile.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Reuse and update shared assistant instructions](/managed-agents/profiles-prompts/prompt-fragments)",
      "slug": "/api/agent-profiles/create-prompt-fragment",
      "method": "POST",
      "path": "/api/v1/prompt-fragments/create",
      "requestSchema": "llm_v1_services_agent_profile_v1_CreatePromptFragmentRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_CreatePromptFragmentResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Fragment created; the stored record is echoed back",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:getPromptFragment",
      "operationId": "getPromptFragment",
      "bundle": "agent-profiles.yaml",
      "title": "Get a prompt fragment",
      "description": "Returns one fragment by id.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Reuse and update shared assistant instructions](/managed-agents/profiles-prompts/prompt-fragments)",
      "slug": "/api/agent-profiles/get-prompt-fragment",
      "method": "POST",
      "path": "/api/v1/prompt-fragments/get",
      "requestSchema": "llm_v1_services_agent_profile_v1_GetPromptFragmentRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_GetPromptFragmentResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Fragment returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:listPromptFragments",
      "operationId": "listPromptFragments",
      "bundle": "agent-profiles.yaml",
      "title": "List prompt fragments",
      "description": "Returns the project's fragments, paginated, together with the current project-wide fragment-set version.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Reuse and update shared assistant instructions](/managed-agents/profiles-prompts/prompt-fragments)",
      "slug": "/api/agent-profiles/list-prompt-fragments",
      "method": "POST",
      "path": "/api/v1/prompt-fragments/list",
      "requestSchema": "llm_v1_services_agent_profile_v1_ListPromptFragmentsRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_ListPromptFragmentsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Page of fragments",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:updatePromptFragment",
      "operationId": "updatePromptFragment",
      "bundle": "agent-profiles.yaml",
      "title": "Update a prompt fragment",
      "description": "Partially updates a fragment via [`updateMask`](/api/agent-profiles/update-prompt-fragment#request-field-updatemask), using the mask semantics of [profile update](/managed-agents/profiles-prompts#update-a-profile).\n\nThe change reaches every profile that includes this fragment on its next turn and increments the project-wide fragment-set version. There is no per-profile rollout.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Reuse and update shared assistant instructions](/managed-agents/profiles-prompts/prompt-fragments)",
      "slug": "/api/agent-profiles/update-prompt-fragment",
      "method": "POST",
      "path": "/api/v1/prompt-fragments/update",
      "requestSchema": "llm_v1_services_agent_profile_v1_UpdatePromptFragmentRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_UpdatePromptFragmentResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Fragment updated; the new stored record is echoed back",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:deletePromptFragment",
      "operationId": "deletePromptFragment",
      "bundle": "agent-profiles.yaml",
      "title": "Delete a prompt fragment",
      "description": "Deletes a fragment from the current set. The renderer reports missing fragments and other reachable-template errors; its caller can then return the original prompt.\n\n**Deleting does not rewrite the profiles that include it**\n\nA missing fragment can leave the system prompt unrendered, so literal `{{template \"safety\" .}}` text reaches the model. Generation may continue with that raw template; this is not a validated or safe fallback, and a successful response does not prove that the intended instructions were rendered. Other failures can still stop the turn.\n\nCheck dependencies before removal: page through all profiles and inspect their [`generationConfig.systemPrompt`](/api/models/schema-1h82h7ri5p#request-field-systemprompt) values, then check nested fragment includes too. Checking one page or only direct includes can miss a dependent profile.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Reuse and update shared assistant instructions](/managed-agents/profiles-prompts/prompt-fragments)",
      "slug": "/api/agent-profiles/delete-prompt-fragment",
      "method": "POST",
      "path": "/api/v1/prompt-fragments/delete",
      "requestSchema": "llm_v1_services_agent_profile_v1_DeletePromptFragmentRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_DeletePromptFragmentResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Fragment deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "agent-profiles:importAgentProfiles",
      "operationId": "importAgentProfiles",
      "bundle": "agent-profiles.yaml",
      "title": "Import a prompt library",
      "description": "Bulk-converts a source prompt library into profiles and reusable fragments. Conversion happens at import time: prompts are rewritten to the platform template syntax and variable specifications are derived from usage. The platform never interprets the source DSL when serving a turn.\n\nExisting rows cause the import to stop at the first conflict with `ALREADY_EXISTS`, unless overwrite is enabled. In overwrite mode, existing profiles and fragments are replaced. Writes apply fragments before profiles and are not atomic across rows: a later failure can leave earlier writes in place. Re-read the library and reconcile it before retrying.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build a reusable assistant profile](/managed-agents/profiles-prompts)",
      "slug": "/api/agent-profiles/import-agent-profiles",
      "method": "POST",
      "path": "/api/v1/agent-profiles/import",
      "requestSchema": "llm_v1_services_agent_profile_v1_ImportAgentProfilesRequest",
      "responseSchema": "llm_v1_services_agent_profile_v1_ImportAgentProfilesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Converted profiles and fragments, as stored",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Backend-owned tenant-project agent configuration. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive trusted tenant/project and configuration entitlement; use a tenant backend without a user subject; agent tool calls are outside this intended access. Intended audience: Tenant backend. Backend-owned tenant-project agent configuration.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "end-users:updateLocation",
      "operationId": "updateLocation",
      "bundle": "end-users.yaml",
      "title": "Update the caller's location",
      "description": "Sets the caller's coordinates. The IANA timezone is **derived server-side** from the coordinates and returned on the response — do not send a timezone.\n\nCoordinates (0, 0) are a real location, not a deletion command. This operation does not offer a location-clear control.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an agent preferences screen](/core-platform/identity-access/end-users)",
      "slug": "/api/end-users/update-location",
      "method": "POST",
      "path": "/api/v1/enduser/update-location",
      "requestSchema": "platform_v1_services_enduser_gateway_v1_UpdateLocationRequest",
      "responseSchema": "platform_v1_services_enduser_v1_UpdateLocationResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Location updated; response carries the derived timezone",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: End-user self-service for the verified user only. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive identity from ingress and reject writes/reads for other users; the current scope uses the default project. Intended audience: App user. End-user self-service for the verified user only.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "end-users:updateLocale",
      "operationId": "updateLocale",
      "bundle": "end-users.yaml",
      "title": "Update the caller's locale override",
      "description": "Sets a BCP-47 locale override for the caller, e.g. `es-MX`. This overrides the locale supplied by the identity provider.\n\nSend an **empty string** to clear the override and fall back to the identity-provider locale.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an agent preferences screen](/core-platform/identity-access/end-users)",
      "slug": "/api/end-users/update-locale",
      "method": "POST",
      "path": "/api/v1/enduser/update-locale",
      "requestSchema": "platform_v1_services_enduser_gateway_v1_UpdateLocaleRequest",
      "responseSchema": "platform_v1_services_enduser_v1_UpdateLocaleResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Locale override updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: End-user self-service for the verified user only. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive identity from ingress and reject writes/reads for other users; the current scope uses the default project. Intended audience: App user. End-user self-service for the verified user only.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "end-users:updateDefaultGenerationConfig",
      "operationId": "updateDefaultGenerationConfig",
      "bundle": "end-users.yaml",
      "title": "Update the caller's default generation config",
      "description": "Stores the caller's generation preferences. The generation path fills fields left unset by the selected per-send, profile or conversation configuration; already set values remain unchanged. Explicitly present sampling values, including zero, preserve their presence. Model/provider support determines which accepted controls affect a response.\n\nOnly user-settable controls are accepted. A recognized operational setting or a model outside the platform allowlist fails the whole request; settings are not silently removed to make a config acceptable. Read the saved profile after an update rather than assuming every submitted setting took effect.\n\nUse this in a guide: [Build an agent preferences screen](/core-platform/identity-access/end-users)",
      "slug": "/api/end-users/update-default-generation-config",
      "method": "POST",
      "path": "/api/v1/enduser/update-generation-config",
      "requestSchema": "platform_v1_services_enduser_gateway_v1_UpdateDefaultGenerationConfigRequest",
      "responseSchema": "platform_v1_services_enduser_v1_UpdateDefaultGenerationConfigResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Default generation config updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: End-user self-service for the verified user only. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Model selection access",
            "mode": "Enforcing",
            "meaning": "<p>Requested models must be eligible for the platform and tenant. Empty model selections are allowed.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "end-users:updateMetadata",
      "operationId": "updateMetadata",
      "bundle": "end-users.yaml",
      "title": "Update the caller's metadata",
      "description": "Merges the supplied key/value pairs into the caller's metadata map.\n\nThis is a **merge, not a replace**: keys you omit are left untouched. To delete a key, send it with an empty-string value.\n\nThe request examples below show setting metadata values and deleting `dismissedWelcome` with an empty string. If you send `{\"preferredView\":\"compact\",\"dismissedWelcome\":\"\"}` as the metadata map, `preferredView` is overwritten, `dismissedWelcome` is deleted, and an omitted key such as `referralCode` is left untouched.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an agent preferences screen](/core-platform/identity-access/end-users)",
      "slug": "/api/end-users/update-metadata",
      "method": "POST",
      "path": "/api/v1/enduser/update-metadata",
      "requestSchema": "platform_v1_services_enduser_gateway_v1_UpdateMetadataRequest",
      "responseSchema": "platform_v1_services_enduser_v1_UpdateMetadataResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Metadata merged",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: End-user self-service for the verified user only. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive identity from ingress and reject writes/reads for other users; the current scope uses the default project. Intended audience: App user. End-user self-service for the verified user only.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "end-users:getEndUser",
      "operationId": "getEndUser",
      "bundle": "end-users.yaml",
      "title": "Get the caller's end-user profile",
      "description": "Returns the caller's full end-user record — identity claims sourced from the identity provider, profile settings the user has set, and lifecycle timestamps.\n\n**A user with no profile is not a 404**\n\nIf no row exists yet, the call still succeeds and returns an empty [`endUser`](/api/end-users/get-end-user#response-field-enduser) object. Treat \"no profile yet\" and \"profile with no overrides\" identically — do not branch on the difference when choosing settings. Treat the missing profile as an absent record; default-valued fields alone do not prove that an account exists or that deletion completed.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an agent preferences screen](/core-platform/identity-access/end-users)",
      "slug": "/api/end-users/get-end-user",
      "method": "POST",
      "path": "/api/v1/enduser/get",
      "requestSchema": "platform_v1_services_enduser_gateway_v1_GetEndUserRequest",
      "responseSchema": "platform_v1_services_enduser_v1_GetEndUserResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Profile returned (possibly empty if no row exists yet)",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: End-user self-service for the verified user only. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Derive identity from ingress and reject writes/reads for other users; the current scope uses the default project. Intended audience: App user. End-user self-service for the verified user only.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "secrets:putSecret",
      "operationId": "putSecret",
      "bundle": "secrets.yaml",
      "title": "Create or update a secret",
      "description": "Writes or replaces a value under `name`; this upsert also rotates the stored credential. The response contains metadata only, and no public read endpoint returns the value. Name-based bindings remain the same, but consumers can retain prior values in caches or in-flight work; this is not upstream credential revocation.\n\nValue storage and metadata updates are separate steps. On an error, metadata alone cannot confirm which value is current. Stop using the affected binding and contact your Travila operator before retrying.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized tenant project secret administration.\n\nUse this in a guide: [Connect a private tool without putting its credential in prompts](/core-platform/secrets) · [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers) · [Secret values and credential references](/api/secrets/credentials)",
      "slug": "/api/secrets/put-secret",
      "method": "POST",
      "path": "/api/v1/secrets/put",
      "requestSchema": "platform_v1_services_secretmanager_v1_PutSecretRequest",
      "responseSchema": "platform_v1_services_secretmanager_v1_PutSecretResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Secret written; metadata only",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering project secrets. Any user identity is retained for audit and does not switch the operation to person-owned credentials.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized tenant project secret administration",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: authenticate the tenant backend, derive tenant/project only from trusted context, authorize this secret-management action in that project, and expose metadata only. Tenant/project headers are read from the request context; this alone does not establish the full authorization boundary.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "secrets:getSecretMetadata",
      "operationId": "getSecretMetadata",
      "bundle": "secrets.yaml",
      "title": "Get a secret's metadata",
      "description": "Returns the secret’s metadata without exposing the credential. Unknown names return 404. The metadata revision records that row; after a partially failed write it is not independent proof of the actual stored credential version.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized tenant project secret administration.\n\nUse this in a guide: [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers) · [Secret values and credential references](/api/secrets/credentials)",
      "slug": "/api/secrets/get-secret-metadata",
      "method": "POST",
      "path": "/api/v1/secrets/get-metadata",
      "requestSchema": "platform_v1_services_secretmanager_v1_GetSecretMetadataRequest",
      "responseSchema": "platform_v1_services_secretmanager_v1_GetSecretMetadataResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Metadata returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering project secrets. Any user identity is retained for audit and does not switch the operation to person-owned credentials.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized tenant project secret administration",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: authenticate the tenant backend, derive tenant/project only from trusted context, authorize this secret-management action in that project, and expose metadata only. Tenant/project headers are read from the request context; this alone does not establish the full authorization boundary.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "secrets:listSecrets",
      "operationId": "listSecrets",
      "bundle": "secrets.yaml",
      "title": "List secrets",
      "description": "Returns metadata for every secret in the project, paginated. Values are not included, and there is no parameter that would include them.\n\nSend `{}` for the first page at the server's default size.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized tenant project secret administration.\n\nUse this in a guide: [Secret values and credential references](/api/secrets/credentials)",
      "slug": "/api/secrets/list-secrets",
      "method": "POST",
      "path": "/api/v1/secrets/list",
      "requestSchema": "platform_v1_services_secretmanager_v1_ListSecretsRequest",
      "responseSchema": "platform_v1_services_secretmanager_v1_ListSecretsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Page of secret metadata",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering project secrets. Any user identity is retained for audit and does not switch the operation to person-owned credentials.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized tenant project secret administration",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: authenticate the tenant backend, derive tenant/project only from trusted context, authorize this secret-management action in that project, and expose metadata only. Tenant/project headers are read from the request context; this alone does not establish the full authorization boundary.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "secrets:deleteSecret",
      "operationId": "deleteSecret",
      "bundle": "secrets.yaml",
      "title": "Delete a secret",
      "description": "Deletes the stored value before its metadata. An absent secret is an idempotent success with `deleted` false, which may be omitted. A failure does not prove the previous value remains intact.\n\nKnown custom MCP references block deletion with 409 unless `force` is used. Detach or rebind those consumers first where possible. The reference list covers tracked custom servers, not every possible external consumer. Forced deletion can break future credential resolution; it does not recall cached or already dispatched use, revoke the credential at its issuer, or attest to backup erasure.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized tenant project secret administration.\n\nUse this in a guide: [Connect a private tool without putting its credential in prompts](/core-platform/secrets) · [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers) · [Secret values and credential references](/api/secrets/credentials)",
      "slug": "/api/secrets/delete-secret",
      "method": "POST",
      "path": "/api/v1/secrets/delete",
      "requestSchema": "platform_v1_services_secretmanager_v1_DeleteSecretRequest",
      "responseSchema": "platform_v1_services_secretmanager_v1_DeleteSecretResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Delete processed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Tenant",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authenticated tenant backend administering project secrets. Any user identity is retained for audit and does not switch the operation to person-owned credentials.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized tenant project secret administration",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: authenticate the tenant backend, derive tenant/project only from trusted context, authorize this secret-management action in that project, and expose metadata only. Tenant/project headers are read from the request context; this alone does not establish the full authorization boundary.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:createFolder",
      "operationId": "createFolder",
      "bundle": "storage.yaml",
      "title": "Create a new folder",
      "description": "Creates the requested folder entry at the specified path. It does not create intermediate parent entries; create those explicitly when needed.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Organize a customer’s project documents](/core-platform/files-data/folders)",
      "slug": "/api/storage/create-folder",
      "method": "POST",
      "path": "/api/v1/storage/create-folder",
      "requestSchema": "storage_v1_services_gateway_v1_CreateFolderRequest",
      "responseSchema": "storage_v1_services_gateway_v1_CreateFolderResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Folder created (or already existed)",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:deleteFolder",
      "operationId": "deleteFolder",
      "bundle": "storage.yaml",
      "title": "Delete a folder",
      "description": "Deletes the selected folder entry and reports deletion counts on success.\n\nWith `recursive` false or omitted, the operation leaves descendants in place and does not require an empty folder. This option cannot safely test whether the project still contains documents.\n\nWith `recursive: true`, it also attempts descendant file and folder deletion. A failure can follow earlier object deletions, so inspect the resulting state before recovery.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Organize a customer’s project documents](/core-platform/files-data/folders)",
      "slug": "/api/storage/delete-folder",
      "method": "POST",
      "path": "/api/v1/storage/delete-folder",
      "requestSchema": "storage_v1_services_gateway_v1_DeleteFolderRequest",
      "responseSchema": "storage_v1_services_gateway_v1_DeleteFolderResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Folder deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:listFiles",
      "operationId": "listFiles",
      "bundle": "storage.yaml",
      "title": "List files and folders in a directory",
      "description": "Lists files and subfolders under the given folder path. The current file filter accepts upload-date fields but does not enforce them; do not rely on those fields to exclude records.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Build a searchable document library](/core-platform/files-data/managing)",
      "slug": "/api/storage/list-files",
      "method": "POST",
      "path": "/api/v1/storage/list-files",
      "requestSchema": "storage_v1_services_gateway_v1_ListFilesRequest",
      "responseSchema": "storage_v1_services_gateway_v1_ListFilesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "File listing returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:uploadFile",
      "operationId": "uploadFile",
      "bundle": "storage.yaml",
      "title": "Upload a file (deprecated)",
      "description": "**Deprecated — use the 3-step pre-signed flow instead** (`generate-upload-url` → `PUT` → `register-uploaded-file`).\n\nUploads file content synchronously to the specified folder. For large files, prefer the pre-signed flow to avoid sending the full content through this operation.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Add file attachments to a support request](/core-platform/files-data/files)",
      "slug": "/api/storage/upload-file",
      "method": "POST",
      "path": "/api/v1/storage/upload-file",
      "requestSchema": "storage_v1_services_gateway_v1_UploadFileRequest",
      "responseSchema": "storage_v1_services_gateway_v1_UploadFileResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "File uploaded successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Deprecated",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:deleteFile",
      "operationId": "deleteFile",
      "bundle": "storage.yaml",
      "title": "Delete a file",
      "description": "Deletes the stored object and tracked file metadata, releasing tracked quota on successful completion. This does not prove removal from backups, invalidate every copied URL immediately, or undo a download already in flight. Reconcile partial failures.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Build a searchable document library](/core-platform/files-data/managing)",
      "slug": "/api/storage/delete-file",
      "method": "POST",
      "path": "/api/v1/storage/delete-file",
      "requestSchema": "storage_v1_services_gateway_v1_DeleteFileRequest",
      "responseSchema": "storage_v1_services_gateway_v1_DeleteFileResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "File deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:moveFile",
      "operationId": "moveFile",
      "bundle": "storage.yaml",
      "title": "Move or rename a file",
      "description": "Moves or renames a stored file while preserving its identity.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Build a searchable document library](/core-platform/files-data/managing)",
      "slug": "/api/storage/move-file",
      "method": "POST",
      "path": "/api/v1/storage/move-file",
      "requestSchema": "storage_v1_services_gateway_v1_MoveFileRequest",
      "responseSchema": "storage_v1_services_gateway_v1_MoveFileResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "File moved",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:getFileMetadata",
      "operationId": "getFileMetadata",
      "bundle": "storage.yaml",
      "title": "Get file metadata",
      "description": "Retrieves a file's tracked metadata without downloading its content.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Build a searchable document library](/core-platform/files-data/managing)",
      "slug": "/api/storage/get-file-metadata",
      "method": "POST",
      "path": "/api/v1/storage/get-file-metadata",
      "requestSchema": "storage_v1_services_gateway_v1_GetFileMetadataRequest",
      "responseSchema": "storage_v1_services_gateway_v1_GetFileMetadataResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "File metadata returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:updateFileMetadata",
      "operationId": "updateFileMetadata",
      "bundle": "storage.yaml",
      "title": "Update file metadata",
      "description": "Replaces the metadata map and tag list when they survive decoding as nonnil values; it does not merge individual map keys. A nonempty description replaces the old description. This public shape has no reliable explicit clear operation for every empty value. Read the current record and submit the complete intended map/list; concurrent updates can overwrite one another.\n\n### Update metadata\n\nThis operation cannot clear tags with `[]`; an empty description leaves the previous description unchanged.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Build a searchable document library](/core-platform/files-data/managing)",
      "slug": "/api/storage/update-file-metadata",
      "method": "POST",
      "path": "/api/v1/storage/update-file-metadata",
      "requestSchema": "storage_v1_services_gateway_v1_UpdateFileMetadataRequest",
      "responseSchema": "storage_v1_services_gateway_v1_UpdateFileMetadataResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "File metadata updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:getStorageQuota",
      "operationId": "getStorageQuota",
      "bundle": "storage.yaml",
      "title": "Get storage usage and quota",
      "description": "Returns the authenticated user's current tracked storage usage and quota.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Build a searchable document library](/core-platform/files-data/managing)",
      "slug": "/api/storage/get-storage-quota",
      "method": "POST",
      "path": "/api/v1/storage/get-storage-quota",
      "requestSchema": "storage_v1_services_gateway_v1_GetStorageQuotaRequest",
      "responseSchema": "storage_v1_services_gateway_v1_GetStorageQuotaResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Quota information returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:searchFiles",
      "operationId": "searchFiles",
      "bundle": "storage.yaml",
      "title": "Search files",
      "description": "Searches the effective user's tracked files using a case-insensitive filename substring or a case-insensitive complete tag. File contents, such as text inside a PDF, are not searched.\n\nSupported `FileFilter` fields narrow candidates before the query is applied, and all listed tags must be present. The date filters [`uploadedAfter`](/api/models/schema-oq26kmqtvq#request-field-uploadedafter) and [`uploadedBefore`](/api/models/schema-oq26kmqtvq#request-field-uploadedbefore) are accepted but currently not enforced; do not offer a date range as an effective filter.\n\n[`maxResults`](/api/storage/search-files#request-field-maxresults) caps a single response; search does not paginate. If results are too broad, let the customer refine the name, tag or folder rather than promising a complete result set.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Build a searchable document library](/core-platform/files-data/managing)",
      "slug": "/api/storage/search-files",
      "method": "POST",
      "path": "/api/v1/storage/search-files",
      "requestSchema": "storage_v1_services_gateway_v1_SearchFilesRequest",
      "responseSchema": "storage_v1_services_gateway_v1_SearchFilesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Search results returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:generateUploadUrl",
      "operationId": "generateUploadUrl",
      "bundle": "storage.yaml",
      "title": "Generate a pre-signed upload URL",
      "description": "Step 1: issues a time-limited signed URL for direct upload. `sizeBytes` is checked against current tracked quota and used as the signed upper size bound; it is not an atomic reservation or an exact-size assertion. Send the returned required headers, upload, and then register the returned fileId. The URL can be reused until expiry; treat it as a credential.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Add file attachments to a support request](/core-platform/files-data/files) · [Organize a customer’s project documents](/core-platform/files-data/folders) · [Summarize a customer’s uploaded report](/managed-agents/conversations/attachments) · [Build a signed-in support chat that survives reconnects](/managed-agents/conversations/build-chat-assistant)",
      "slug": "/api/storage/generate-upload-url",
      "method": "POST",
      "path": "/api/v1/storage/generate-upload-url",
      "requestSchema": "storage_v1_services_gateway_v1_GenerateUploadUrlRequest",
      "responseSchema": "storage_v1_services_gateway_v1_GenerateUploadUrlResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Upload URL generated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:registerUploadedFile",
      "operationId": "registerUploadedFile",
      "bundle": "storage.yaml",
      "title": "Register a file uploaded via pre-signed URL",
      "description": "Step 3: after uploading, register the fileId with the same folderPath and intended fileName. The backend checks the object at the derived caller-scoped path and reads its stored size and content-type metadata. MIME metadata can be supplied by the uploader and is not byte/content validation. The signed-upload path does not compute a checksum.\n\nAn already registered fileId returns the existing record with registered false, which may be omitted. This retry behavior does not prove that a reused signed URL cannot subsequently alter the object. Missing uploaded objects return 404; quota and backend failures require reconciliation.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Add file attachments to a support request](/core-platform/files-data/files) · [Organize a customer’s project documents](/core-platform/files-data/folders) · [Upload registration and URL expiry](/api/storage/uploads)",
      "slug": "/api/storage/register-uploaded-file",
      "method": "POST",
      "path": "/api/v1/storage/register-uploaded-file",
      "requestSchema": "storage_v1_services_gateway_v1_RegisterUploadedFileRequest",
      "responseSchema": "storage_v1_services_gateway_v1_RegisterUploadedFileResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "File registered (or already registered)",
      "requestBodyRequired": true,
      "errors": {
        "404": {
          "description": "No uploaded object found for this `fileId` (PUT the file first)"
        }
      },
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:generateDownloadUrl",
      "operationId": "generateDownloadUrl",
      "bundle": "storage.yaml",
      "title": "Generate a pre-signed download URL",
      "description": "Generates a time-limited pre-signed URL for downloading a file directly from the storage backend.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Add file attachments to a support request](/core-platform/files-data/files)",
      "slug": "/api/storage/generate-download-url",
      "method": "POST",
      "path": "/api/v1/storage/generate-download-url",
      "requestSchema": "storage_v1_services_gateway_v1_GenerateDownloadUrlRequest",
      "responseSchema": "storage_v1_services_gateway_v1_GenerateDownloadUrlResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Download URL generated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:batchGenerateDownloadUrls",
      "operationId": "batchGenerateDownloadUrls",
      "bundle": "storage.yaml",
      "title": "Generate pre-signed download URLs for multiple files",
      "description": "Generates download URLs in a batch. Inspect each result’s `success === true` and match by fileId; order is not guaranteed. Per-file errors can be returned independently, but malformed requests, authentication and request-level backend failures can still fail the whole call. URLs remain sensitive bearer credentials.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Add file attachments to a support request](/core-platform/files-data/files)",
      "slug": "/api/storage/batch-generate-download-urls",
      "method": "POST",
      "path": "/api/v1/storage/batch-generate-download-urls",
      "requestSchema": "storage_v1_services_gateway_v1_BatchGenerateDownloadUrlsRequest",
      "responseSchema": "storage_v1_services_gateway_v1_BatchGenerateDownloadUrlsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Per-file download URL results returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "storage:getState",
      "operationId": "getState",
      "bundle": "storage.yaml",
      "title": "Get storage state",
      "description": "Returns the effective user’s full tracked storage state without pagination. Intended for restricted debugging; large accounts can produce large responses. A storage record is not an inventory or erasure certificate for every object/backend copy.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Accepted storage owner context, Storage owner actor routing.\n\nUse this in a guide: [Build a searchable document library](/core-platform/files-data/managing)",
      "slug": "/api/storage/get-state",
      "method": "POST",
      "path": "/api/v1/storage/get-state",
      "requestSchema": "storage_v1_services_gateway_v1_GetStateRequest",
      "responseSchema": "storage_v1_services_gateway_v1_GetStateResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Full state returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant",
        "condition_mode": "Inherit",
        "retry_safe": true,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended audience: an authenticated person using their own storage. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended audience: an authorized tenant backend acting for a verified person beneficiary. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Accepted storage owner context",
            "mode": "Enforcing",
            "meaning": "<p>Every gateway handler builds owner context. A request recognized by nonblank x-auth-method, x-user-id or x-tenant-id header derives identity only from required user and tenant headers and ignores body context. Headerless calls may supply tenant and Subject, with CallerKey used when Subject is absent; otherwise required header derivation is attempted. Header absence does not authenticate an internal caller. These are existing manual branches, not a new trusted-only boundary or a platform-composite adapter.</p>"
          },
          {
            "condition_name": "Storage owner actor routing",
            "mode": "Enforcing",
            "meaning": "<p>Every operation addresses the StorageManager actor using that accepted context owner. Public-header identity becomes tenant:default:user. Headerless supplied Subject or CallerKey is tenant-prefixed and passed through the existing unvalidated default-project insertion helper, including its colon-containing-key behavior. The addressed actor state, file lookups and normalized paths supply the current owner boundary; the actor performs no independent caller authorization. Tenant scope here describes the accepted tenant namespace with fixed default project, not authenticated authority for supplied identity, independent project grants or validated/injective segment encoding.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:createThread",
      "operationId": "createThread",
      "bundle": "conversations.yaml",
      "title": "Create a new conversation thread",
      "description": "Creates a conversation thread for the authenticated user.\n\nUse this in a guide: [Build a support conversation the user can return to](/managed-agents/conversations) · [Let a customer navigate your app through chat](/managed-agents/delegation-approvals/build-agent-with-tools) · [Build a reusable assistant profile](/managed-agents/profiles-prompts) · [Build a research, bulk-summary or structured-summary flow](/managed-agents/model-controls/examples) · [Route an image question to a capable model](/managed-agents/model-controls/filtering) · [Keep a model on the providers you choose](/managed-agents/model-controls/provider-pinning) · [Build a signed-in support chat that survives reconnects](/managed-agents/conversations/build-chat-assistant) · [Configure a support conversation that stays predictable](/managed-agents/conversations/configuration) · [Complete your first support-chat turn](/managed-agents/conversations/quickstart) · [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps) · [Profile selection and prompt versions](/api/agent-profiles/selection-and-versioning)",
      "slug": "/api/conversations/create-thread",
      "method": "POST",
      "path": "/api/v1/llm/create-thread",
      "requestSchema": "llm_v1_services_gateway_v1_CreateThreadRequest",
      "responseSchema": "llm_v1_services_gateway_v1_CreateThreadResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Thread created successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Model selection access",
            "mode": "Enforcing",
            "meaning": "<p>Requested models must be eligible for the platform and tenant. Empty model selections are allowed.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:listThreads",
      "operationId": "listThreads",
      "bundle": "conversations.yaml",
      "title": "List conversation threads",
      "description": "Returns a paginated list of conversation threads for the authenticated user, ordered by `lastMessageAt` descending, then `threadId` descending for ties. Changes to `updatedAt` alone do not change the list position.\n\nPass `nextPageToken` as `pageToken` to continue after the last returned thread in that order. Pages read the current conversation projection; they do not share a point-in-time snapshot. Concurrent message activity can move a thread ahead of a continuation token, so a multi-page traversal can miss threads that move while it is in progress.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build a support conversation the user can return to](/managed-agents/conversations) · [Connect signed-in users to their conversations](/core-platform/identity-access/authentication) · [Build a signed-in support chat that survives reconnects](/managed-agents/conversations/build-chat-assistant) · [Complete your first support-chat turn](/managed-agents/conversations/quickstart)",
      "slug": "/api/conversations/list-threads",
      "method": "POST",
      "path": "/api/v1/llm/list-threads",
      "requestSchema": "llm_v1_services_gateway_v1_ListThreadsRequest",
      "responseSchema": "llm_v1_services_gateway_v1_ListThreadsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Threads listed successfully",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:sendMessage",
      "operationId": "sendMessage",
      "bundle": "conversations.yaml",
      "title": "Send a message to a conversation",
      "description": "Sends a user message to the specified conversation thread. This appends the message to history and starts a generation workflow run. If a run is already in progress, behavior depends on the conversation's interrupt policy.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status interpretation and recovery.\n\nUse this in a guide: [API Reference](/api) · [Build a support conversation the user can return to](/managed-agents/conversations) · [Let a customer navigate your app through chat](/managed-agents/delegation-approvals/build-agent-with-tools) · [Approve a tool action and finish the conversation](/managed-agents/delegation-approvals/using-tools) · [Build a reusable assistant profile](/managed-agents/profiles-prompts) · [Recover when no model can serve the request](/managed-agents/model-controls/errors) · [Build a research, bulk-summary or structured-summary flow](/managed-agents/model-controls/examples) · [Route an image question to a capable model](/managed-agents/model-controls/filtering) · [Keep a model on the providers you choose](/managed-agents/model-controls/provider-pinning) · [Add an optional reasoning panel to a chat reply](/managed-agents/model-controls/reasoning) · [Configuration precedence and plugins](/api/model-controls/configuration) · [Model routing and selection](/api/model-controls/routing) · [Control access with scopes](/core-platform/identity-access/scopes-permissions) · [Build an assistant that researches the web](/integrations/tools-connections) · [MCP server selection](/api/tools/selection) · [Summarize a customer’s uploaded report](/managed-agents/conversations/attachments) · [Build a signed-in support chat that survives reconnects](/managed-agents/conversations/build-chat-assistant) · [Explain the setting the customer is looking at](/managed-agents/conversations/client-context) · [Configure a support conversation that stays predictable](/managed-agents/conversations/configuration) · [Get a customer’s reply and recover an interrupted send](/managed-agents/conversations/generation) · [Complete your first support-chat turn](/managed-agents/conversations/quickstart) · [Restore a chat after the connection drops](/managed-agents/conversations/streaming/subscribing) · [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers) · [Messages and runs](/api/conversations/messages-and-runs) · [Profile selection and prompt versions](/api/agent-profiles/selection-and-versioning)",
      "slug": "/api/conversations/send-message",
      "method": "POST",
      "path": "/api/v1/llm/send-message",
      "requestSchema": "llm_v1_services_gateway_v1_SendMessageRequest",
      "responseSchema": "llm_v1_services_gateway_v1_SendMessageResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Message accepted and generation initiated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Generation entitlement and model selection",
            "mode": "Enforcing",
            "meaning": "<p>Generation is subject to entitlement checks. Requested models must be eligible for the platform and tenant. Empty model selections are allowed.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:appendMessage",
      "operationId": "appendMessage",
      "bundle": "conversations.yaml",
      "title": "Append a message without generating",
      "description": "Appends a context message to the thread's history without starting generation for this call. Use it to record a system note, an external event or other context that later generations should see without triggering a reply.\n\nRead `conversation-state` to confirm the event: append assigns the next monotonic sequence immediately and publishes a message event. `ROLE_USER` opens a new user turn; other roles join the most recent user turn. Choose the role for how the event should appear in history, without changing the fact it records.\n\nAppend bypasses the interrupt policy and pending queue. It can run while another turn is active, but that turn may already have assembled its provider request. This call does not stop already running work or guarantee zero account-level cost: storage and future model input can still cost money.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Get a customer’s reply and recover an interrupted send](/managed-agents/conversations/generation) · [Context and compaction](/api/conversations/context-and-compaction)",
      "slug": "/api/conversations/append-message",
      "method": "POST",
      "path": "/api/v1/llm/append-message",
      "requestSchema": "llm_v1_services_gateway_v1_AppendMessageRequest",
      "responseSchema": "llm_v1_services_gateway_v1_AppendMessageResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Message appended",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:rateMessage",
      "operationId": "rateMessage",
      "bundle": "conversations.yaml",
      "title": "Rate an assistant message",
      "description": "Records the caller's rating on an assistant-generated message. One entry is stored per rater per message; re-rating replaces only the caller's previous entry.\n\nSerialize re-rating and withdrawal actions and reconcile stored state: uniqueness does not guarantee ordering against a delayed request or analytics event.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Collect message feedback](/insights/evaluation/message-feedback) · [Feedback and score attribution](/api/evals/scoring)",
      "slug": "/api/conversations/rate-message",
      "method": "POST",
      "path": "/api/v1/llm/rate-message",
      "requestSchema": "llm_v1_services_gateway_v1_RateMessageRequest",
      "responseSchema": "llm_v1_services_gateway_v1_RateMessageResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Rating recorded",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:deleteMessageRating",
      "operationId": "deleteMessageRating",
      "bundle": "conversations.yaml",
      "title": "Withdraw your rating on a message",
      "description": "Removes the caller's own rating from a message. As with `rate-message`, the rater is derived server-side from the verified request headers.\n\nThis is idempotent: withdrawing a rating that was never left is a success, not an error — the response returns `removed: false` in that case.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Collect message feedback](/insights/evaluation/message-feedback) · [Feedback and score attribution](/api/evals/scoring)",
      "slug": "/api/conversations/delete-message-rating",
      "method": "POST",
      "path": "/api/v1/llm/delete-message-rating",
      "requestSchema": "llm_v1_services_gateway_v1_DeleteMessageRatingRequest",
      "responseSchema": "llm_v1_services_gateway_v1_DeleteMessageRatingResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Rating withdrawn (or confirmed absent)",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:sendMessageSync",
      "operationId": "sendMessageSync",
      "bundle": "conversations.yaml",
      "title": "Send a message and wait for the result",
      "description": "Sends a message and waits for a bounded interval, returning generated messages inline when available. Use it when you need the assistant reply in the HTTP response, such as structured output or a classification.\n\nInspect [`status`](/api/conversations/send-message-sync#response-field-status) even on HTTP 200: a queued message, a pause for client tools or the bounded wait ending can return before the run finishes. A transport timeout or unknown status does not authorize resending the message; reconcile the accepted run.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status interpretation and recovery.\n\nUse this in a guide: [Let a customer navigate your app through chat](/managed-agents/delegation-approvals/build-agent-with-tools) · [Check a chat integration before customers use it](/developer-experience/local-tooling/testing) · [Replay datasets and runs](/insights/evaluation/datasets-and-runs) · [Turn a task description into a validated summary object](/managed-agents/model-controls/structured-output) · [Build an assistant that researches the web](/integrations/tools-connections) · [Get a customer’s reply and recover an interrupted send](/managed-agents/conversations/generation) · [Tool policy resolution and lifecycle](/api/tool-execution/policies) · [Automate recurring agent work](/core-platform/scheduling/build-scheduled-agents) · [Signed callbacks and receiver acknowledgement](/api/scheduled-jobs/callbacks) · [Show one correct chat history as updates arrive](/managed-agents/conversations/streaming/payloads) · [Messages and runs](/api/conversations/messages-and-runs)",
      "slug": "/api/conversations/send-message-sync",
      "method": "POST",
      "path": "/api/v1/llm/send-message-sync",
      "requestSchema": "llm_v1_services_gateway_v1_SendMessageSyncRequest",
      "responseSchema": "llm_v1_services_gateway_v1_SendMessageSyncResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Run status returned; generation may still be active or waiting",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Generation entitlement and model selection",
            "mode": "Enforcing",
            "meaning": "<p>Generation is subject to entitlement checks. Requested models must be eligible for the platform and tenant. Empty model selections are allowed.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:updateSettings",
      "operationId": "updateSettings",
      "bundle": "conversations.yaml",
      "title": "Update conversation settings",
      "description": "Updates the conversation's behavior settings.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an assistant that researches the web](/integrations/tools-connections) · [MCP server selection](/api/tools/selection) · [Configure a support conversation that stays predictable](/managed-agents/conversations/configuration) · [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps)",
      "slug": "/api/conversations/update-settings",
      "method": "POST",
      "path": "/api/v1/llm/update-settings",
      "requestSchema": "llm_v1_services_gateway_v1_UpdateSettingsRequest",
      "responseSchema": "llm_v1_services_gateway_v1_UpdateSettingsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Settings updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:updatePromptVariables",
      "operationId": "updatePromptVariables",
      "bundle": "conversations.yaml",
      "title": "Update prompt variables",
      "description": "Agent Profiles: merges prompt variables into the thread for late-binding. The variables are re-rendered into the active profile's prompt on the next turn. Returns the merged conversation settings.\n\n### Prompt-variable update masks\n\nWhen you supply [`updateMask`](/api/conversations/update-prompt-variables#request-field-updatemask):\n\n* **Masked keys are authoritative.** A masked key whose value is `null` or absent **clears** that variable.\n* **Unmasked keys are untouched.** Variables not listed in the mask keep their current values, even if you include them in the payload.\n\nWithout [`updateMask`](/api/conversations/update-prompt-variables#request-field-updatemask):\n\n* Supplied keys overwrite or add.\n* Null or empty values clear the variable.\n* Keys you omit are not touched.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Configure a support conversation that stays predictable](/managed-agents/conversations/configuration) · [Profile selection and prompt versions](/api/agent-profiles/selection-and-versioning)",
      "slug": "/api/conversations/update-prompt-variables",
      "method": "POST",
      "path": "/api/v1/llm/update-prompt-variables",
      "requestSchema": "llm_v1_services_gateway_v1_UpdatePromptVariablesRequest",
      "responseSchema": "llm_v1_services_gateway_v1_UpdatePromptVariablesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Prompt variables merged",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:updateDefaultGenerationConfig",
      "operationId": "updateDefaultGenerationConfig",
      "bundle": "conversations.yaml",
      "title": "Update default generation config",
      "description": "Updates the conversation’s default generation configuration for later messages. An active profile supplies the base configuration when selected; populated per-request overrides take precedence. Conversation memory settings fill settings omitted by an active profile.\n\nUse this in a guide: [Use remembered preferences in a returning user’s conversation](/managed-agents/memory-knowledge) · [Configure a support conversation that stays predictable](/managed-agents/conversations/configuration) · [Profile selection and prompt versions](/api/agent-profiles/selection-and-versioning)",
      "slug": "/api/conversations/update-default-generation-config",
      "method": "POST",
      "path": "/api/v1/llm/update-default-generation-config",
      "requestSchema": "llm_v1_services_gateway_v1_UpdateDefaultGenerationConfigRequest",
      "responseSchema": "llm_v1_services_gateway_v1_UpdateDefaultGenerationConfigResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Generation config updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Model selection access",
            "mode": "Enforcing",
            "meaning": "<p>Requested models must be eligible for the platform and tenant. Empty model selections are allowed.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:updateContextManagementSettings",
      "operationId": "updateContextManagementSettings",
      "bundle": "conversations.yaml",
      "title": "Update context management settings",
      "description": "Updates how the conversation selects and compacts context for later generations.\n\nSee [Context and compaction](/api/conversations/context-and-compaction) for strategy selection and outcome handling.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Resume a long conversation with a compacted history](/managed-agents/conversations/context-management) · [Context and compaction](/api/conversations/context-and-compaction)",
      "slug": "/api/conversations/update-context-management-settings",
      "method": "POST",
      "path": "/api/v1/llm/update-context-management-settings",
      "requestSchema": "llm_v1_services_gateway_v1_UpdateContextManagementSettingsRequest",
      "responseSchema": "llm_v1_services_gateway_v1_UpdateContextManagementSettingsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Context management settings updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:compactConversation",
      "operationId": "compactConversation",
      "bundle": "conversations.yaml",
      "title": "Compact a conversation",
      "description": "Triggers context compaction, summarizing older conversation messages. The trigger estimate can differ from the next request's actual size, especially after changing prompts or tools. Leave room below the model limit and handle context-limit errors.\n\nWhen configured for asynchronous compaction, this call returns a pending result immediately. Use the returned `compactionId` to inspect the completed record in `conversation-state`'s `compactions` array. Compaction can still delay other messages in the conversation; asynchronous acceptance does not guarantee uninterrupted concurrent messaging.\n\nSee [Context and compaction](/api/conversations/context-and-compaction) for strategy selection and outcome handling.\n\nUse this in a guide: [Resume a long conversation with a compacted history](/managed-agents/conversations/context-management)",
      "slug": "/api/conversations/compact-conversation",
      "method": "POST",
      "path": "/api/v1/llm/compact-conversation",
      "requestSchema": "llm_v1_services_gateway_v1_CompactConversationRequest",
      "responseSchema": "llm_v1_services_gateway_v1_CompactConversationResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Compaction completed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Generation entitlement",
            "mode": "Shadow",
            "meaning": "<p>Checks generation entitlement for the compaction request and logs the result without denying the request through this condition.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:getConversationState",
      "operationId": "getConversationState",
      "bundle": "conversations.yaml",
      "title": "Get full conversation state",
      "description": "Returns the complete conversation state. An unknown or non-owned `externalId` returns `404`.\n\nWhen polling, the absence of an active run does not prove that an accepted or queued request completed. Reconcile the original `runId` and its outcome before retrying an accepted send.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build a support conversation the user can return to](/managed-agents/conversations) · [Build an assistant that researches the web](/integrations/tools-connections) · [Build a signed-in support chat that survives reconnects](/managed-agents/conversations/build-chat-assistant) · [Resume a long conversation with a compacted history](/managed-agents/conversations/context-management) · [Get a customer’s reply and recover an interrupted send](/managed-agents/conversations/generation) · [Complete your first support-chat turn](/managed-agents/conversations/quickstart) · [Show one correct chat history as updates arrive](/managed-agents/conversations/streaming/payloads) · [Restore a chat after the connection drops](/managed-agents/conversations/streaming/subscribing) · [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps) · [Messages and runs](/api/conversations/messages-and-runs)",
      "slug": "/api/conversations/get-conversation-state",
      "method": "POST",
      "path": "/api/v1/llm/conversation-state",
      "requestSchema": "llm_v1_services_gateway_v1_GetConversationStateRequest",
      "responseSchema": "llm_v1_services_gateway_v1_GetConversationStateResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Conversation state returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:createDailySession",
      "operationId": "createDailySession",
      "bundle": "conversations.yaml",
      "title": "Create a voice session (in progress)",
      "description": "Starts the configured hosted-provider voice session for an initialized conversation. Confirm room connection and agent readiness through provider events. A returned session alone does not establish that the agent joined or that transcripts were stored in conversation history.\n\nAt session end, handle room expiry and the client's local capture separately; a local disconnect alone does not establish remote cleanup.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Add a spoken conversation to your app (Preview)](/managed-agents/voice-media)",
      "slug": "/api/conversations/create-daily-session",
      "method": "POST",
      "path": "/api/v1/llm/create-daily-session",
      "requestSchema": "llm_v1_services_gateway_v1_CreateDailySessionRequest",
      "responseSchema": "llm_v1_services_gateway_v1_CreateDailySessionResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Voice session created",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:mintSttToken",
      "operationId": "mintSttToken",
      "bundle": "conversations.yaml",
      "title": "Mint a speech-to-text token (in progress)",
      "description": "Mints a short-lived speech-to-text token using the configured Cartesia credential. The request fails when that credential is missing. The client uses this token to call the STT API directly so the backend key never reaches the client.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Add a spoken conversation to your app (Preview)](/managed-agents/voice-media)",
      "slug": "/api/conversations/mint-stt-token",
      "method": "POST",
      "path": "/api/v1/llm/stt-token",
      "requestSchema": "llm_v1_services_gateway_v1_MintSttTokenRequest",
      "responseSchema": "llm_v1_services_gateway_v1_MintSttTokenResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "STT token minted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:listPendingApprovals",
      "operationId": "listPendingApprovals",
      "bundle": "conversations.yaml",
      "title": "List pending tool approvals",
      "description": "Returns all tool calls in the active generation run that are awaiting human approval. Used when the tool execution policy requires confirmation before executing certain tools.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Approve a tool action and finish the conversation](/managed-agents/delegation-approvals/using-tools) · [Event catalog](/api/events)",
      "slug": "/api/conversations/list-pending-approvals",
      "method": "POST",
      "path": "/api/v1/llm/list-pending-approvals",
      "requestSchema": "llm_v1_services_gateway_v1_ListPendingApprovalsRequest",
      "responseSchema": "llm_v1_services_gateway_v1_ListPendingApprovalsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Pending approvals listed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:submitToolApprovals",
      "operationId": "submitToolApprovals",
      "bundle": "conversations.yaml",
      "title": "Approve or reject pending tool calls",
      "description": "Submits approval decisions for pending calls. An accepted approval permits the conversation workflow to continue subject to execution checks; it is not a general authorization grant. Rejection prevents dispatch of a still-pending call and does not undo an action already executed elsewhere.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Approve a tool action and finish the conversation](/managed-agents/delegation-approvals/using-tools) · [Event catalog](/api/events)",
      "slug": "/api/conversations/submit-tool-approvals",
      "method": "POST",
      "path": "/api/v1/llm/submit-tool-approvals",
      "requestSchema": "llm_v1_services_gateway_v1_SubmitToolApprovalsRequest",
      "responseSchema": "llm_v1_services_gateway_v1_SubmitToolApprovalsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Approvals submitted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:submitClientToolResults",
      "operationId": "submitClientToolResults",
      "bundle": "conversations.yaml",
      "title": "Submit client-side tool execution results",
      "description": "Submits results for client-side tool calls and returns without waiting for the next generation segment. While the conversation still identifies a run, workflow validation rejects unmatched calls with `400` and already-resolved calls with `410`.\n\nIf no active run is recorded, this call can succeed without applying any results. Reconcile stored run and tool state before treating HTTP success as confirmation that the results were applied.\n\nA run can request further batches. Read pending client tools, execute each new batch and submit its results until the run reaches a terminal outcome. An unknown status requires reconciliation with a bounded wait, not an assumption of success. See [Messages and run outcomes](/api/conversations/messages-and-runs) for outcome handling and the synchronous client-tool loop.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.",
      "slug": "/api/conversations/submit-client-tool-results",
      "method": "POST",
      "path": "/api/v1/llm/submit-client-tool-results",
      "requestSchema": "llm_v1_services_gateway_v1_SubmitClientToolResultsRequest",
      "responseSchema": "llm_v1_services_gateway_v1_SubmitClientToolResultsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Client tool results submitted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:submitClientToolResultsSync",
      "operationId": "submitClientToolResultsSync",
      "bundle": "conversations.yaml",
      "title": "Submit client-side tool results and wait for the next segment",
      "description": "Submits client-side tool results and waits until the run arms another client-tool batch or finishes. This continues the loop started by `send-message-sync`. While the conversation still identifies a run, workflow validation rejects unmatched calls with `400` and already-resolved calls with `410`.\n\nIf no active run is recorded, this call can return success immediately without applying any results. Reconcile stored run and tool state before treating HTTP success as confirmation that the results were applied.\n\nEcho the `clientToolCursor` from the response that armed the calls. A stale cursor re-delivers a batch rather than skipping one. When another batch arrives, execute it and submit again with its new cursor until the run reaches a terminal outcome. Reconcile an unknown status with a bounded wait; do not assume success.\n\nAn empty `results` array returns `400`: submitting nothing resolves nothing. Use `list-pending-client-tools` to inspect pending work or recover after a dropped connection. Do not resend the original user message, which would start another run. Use `submit-client-tool-results` when you do not want to hold the connection.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status interpretation and recovery.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Let a customer navigate your app through chat](/managed-agents/delegation-approvals/build-agent-with-tools) · [Check a chat integration before customers use it](/developer-experience/local-tooling/testing) · [Get a customer’s reply and recover an interrupted send](/managed-agents/conversations/generation)",
      "slug": "/api/conversations/submit-client-tool-results-sync",
      "method": "POST",
      "path": "/api/v1/llm/submit-client-tool-results-sync",
      "requestSchema": "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncRequest",
      "responseSchema": "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Run status and available messages or pending client tools returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:listPendingClientTools",
      "operationId": "listPendingClientTools",
      "bundle": "conversations.yaml",
      "title": "List client-side tool calls awaiting a result",
      "description": "Returns the client-side tool calls the run is currently waiting on, with the message each belongs to. Use it to recover after a dropped connection, or from a caller that never holds one.\n\nOn reconnect, pull with this call and then submit — do not resend the original user message, which would start a second run and interrupt the one you were waiting on.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Let a customer navigate your app through chat](/managed-agents/delegation-approvals/build-agent-with-tools)",
      "slug": "/api/conversations/list-pending-client-tools",
      "method": "POST",
      "path": "/api/v1/llm/list-pending-client-tools",
      "requestSchema": "llm_v1_services_gateway_v1_ListPendingClientToolsRequest",
      "responseSchema": "llm_v1_services_gateway_v1_ListPendingClientToolsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Outstanding client-side tool calls",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:getToolCall",
      "operationId": "getToolCall",
      "bundle": "conversations.yaml",
      "title": "Get a single tool call by ID",
      "description": "Reads the identified tool call from the conversation's current run state, including resolved calls retained there. An empty response means the call was not found in that current run; it does not prove the call never executed.\n\nMatch the call ID and inspect both status and result. If its answer window expired, the result reports `client tool timeout`. Inspect both the status and reason before deciding whether any work remains; expiration does not establish whether an action dispatched to the client took effect.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Let a customer navigate your app through chat](/managed-agents/delegation-approvals/build-agent-with-tools) · [Build an assistant that researches the web](/integrations/tools-connections) · [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps) · [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers)",
      "slug": "/api/conversations/get-tool-call",
      "method": "POST",
      "path": "/api/v1/llm/get-tool-call",
      "requestSchema": "llm_v1_services_gateway_v1_GetToolCallRequest",
      "responseSchema": "llm_v1_services_gateway_v1_GetToolCallResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "The tool call",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:mcpListAvailableServers",
      "operationId": "mcpListAvailableServers",
      "bundle": "conversations.yaml",
      "title": "List available MCP servers",
      "description": "Returns the discovered availability of configured MCP servers.\n\n### Built-in catalog entries\n\nThe catalog includes `built-in:tavily`. Travila supplies the vendor credential for this catalog entry; you do not need your own Tavily key. A catalog entry appearing in this list is not a setting that attaches its tools to your conversation.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Let a customer navigate your app through chat](/managed-agents/delegation-approvals/build-agent-with-tools) · [Build an assistant that researches the web](/integrations/tools-connections)",
      "slug": "/api/conversations/mcp-list-available-servers",
      "method": "POST",
      "path": "/api/v1/llm/mcp-list-available-servers",
      "requestSchema": "llm_v1_services_gateway_v1_MCPListAvailableServersRequest",
      "responseSchema": "llm_v1_services_gateway_v1_MCPListAvailableServersResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Server list returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project and Global",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: The catalog includes records from its bound private scope and shared global catalog entries. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: The catalog includes records from its bound private scope and shared global catalog entries. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Tenant/project-only access would require restricting results to owned records or providing a separately scoped global-discovery interface. Current results have mixed scope. Intended audience: App user, Tenant backend. The catalog includes records from its bound private scope and shared global catalog entries.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:mcpGetServerInfo",
      "operationId": "mcpGetServerInfo",
      "bundle": "conversations.yaml",
      "title": "Get detailed MCP server info",
      "description": "Returns server information for custom servers. Requests for other server kinds currently return an empty response; use tool discovery to inspect the available tools. This response does not confirm current connectivity.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.",
      "slug": "/api/conversations/mcp-get-server-info",
      "method": "POST",
      "path": "/api/v1/llm/mcp-get-server-info",
      "requestSchema": "llm_v1_services_gateway_v1_MCPGetServerInfoRequest",
      "responseSchema": "llm_v1_services_gateway_v1_MCPGetServerInfoResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Server info returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project and Global",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: The catalog includes records from its bound private scope and shared global catalog entries. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: The catalog includes records from its bound private scope and shared global catalog entries. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Tenant/project-only access would require restricting results to owned records or providing a separately scoped global-discovery interface. Current results have mixed scope. Intended audience: App user, Tenant backend. The catalog includes records from its bound private scope and shared global catalog entries.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:mcpListTools",
      "operationId": "mcpListTools",
      "bundle": "conversations.yaml",
      "title": "List available MCP tools",
      "description": "Returns tools discovered across the selected MCP servers.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an assistant that researches the web](/integrations/tools-connections) · [Let your assistant answer questions about a customer’s calendar](/integrations/tools-connections/connected-apps) · [Answer questions about a website using your own Firecrawl account](/integrations/tools-connections/custom-mcp-servers)",
      "slug": "/api/conversations/mcp-list-tools",
      "method": "POST",
      "path": "/api/v1/llm/mcp-list-tools",
      "requestSchema": "llm_v1_services_gateway_v1_MCPListToolsRequest",
      "responseSchema": "llm_v1_services_gateway_v1_MCPListToolsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Tools listed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project and Global",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: The catalog includes records from its bound private scope and shared global catalog entries. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: The catalog includes records from its bound private scope and shared global catalog entries. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Tenant/project-only access would require restricting results to owned records or providing a separately scoped global-discovery interface. Current results have mixed scope. Intended audience: App user, Tenant backend. The catalog includes records from its bound private scope and shared global catalog entries.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:mcpCallTool",
      "operationId": "mcpCallTool",
      "bundle": "conversations.yaml",
      "title": "Execute an MCP tool",
      "description": "Invokes an MCP tool directly, outside a conversation flow. Use it to test a tool without starting a generation run.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Check a chat integration before customers use it](/developer-experience/local-tooling/testing) · [Build an assistant that researches the web](/integrations/tools-connections)",
      "slug": "/api/conversations/mcp-call-tool",
      "method": "POST",
      "path": "/api/v1/llm/mcp-call-tool",
      "requestSchema": "llm_v1_services_gateway_v1_MCPCallToolRequest",
      "responseSchema": "llm_v1_services_gateway_v1_MCPCallToolResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Tool executed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:mcpListResources",
      "operationId": "mcpListResources",
      "bundle": "conversations.yaml",
      "title": "List MCP resources",
      "description": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an assistant that researches the web](/integrations/tools-connections)",
      "slug": "/api/conversations/mcp-list-resources",
      "method": "POST",
      "path": "/api/v1/llm/mcp-list-resources",
      "requestSchema": "llm_v1_services_gateway_v1_MCPListResourcesRequest",
      "responseSchema": "llm_v1_services_gateway_v1_MCPListResourcesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Empty response; resource listing is not yet available",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:mcpReadResource",
      "operationId": "mcpReadResource",
      "bundle": "conversations.yaml",
      "title": "Read an MCP resource",
      "description": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an assistant that researches the web](/integrations/tools-connections)",
      "slug": "/api/conversations/mcp-read-resource",
      "method": "POST",
      "path": "/api/v1/llm/mcp-read-resource",
      "requestSchema": "llm_v1_services_gateway_v1_MCPReadResourceRequest",
      "responseSchema": "llm_v1_services_gateway_v1_MCPReadResourceResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Empty response; resource retrieval is not yet available",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:mcpListPrompts",
      "operationId": "mcpListPrompts",
      "bundle": "conversations.yaml",
      "title": "List MCP prompt templates",
      "description": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an assistant that researches the web](/integrations/tools-connections)",
      "slug": "/api/conversations/mcp-list-prompts",
      "method": "POST",
      "path": "/api/v1/llm/mcp-list-prompts",
      "requestSchema": "llm_v1_services_gateway_v1_MCPListPromptsRequest",
      "responseSchema": "llm_v1_services_gateway_v1_MCPListPromptsResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Empty response; prompt listing is not yet available",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:mcpGetPrompt",
      "operationId": "mcpGetPrompt",
      "bundle": "conversations.yaml",
      "title": "Get an MCP prompt template",
      "description": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Build an assistant that researches the web](/integrations/tools-connections)",
      "slug": "/api/conversations/mcp-get-prompt",
      "method": "POST",
      "path": "/api/v1/llm/mcp-get-prompt",
      "requestSchema": "llm_v1_services_gateway_v1_MCPGetPromptRequest",
      "responseSchema": "llm_v1_services_gateway_v1_MCPGetPromptResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Empty response; prompt retrieval is not yet available",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:searchMemories",
      "operationId": "searchMemories",
      "bundle": "conversations.yaml",
      "title": "Semantic search over memories",
      "description": "Searches memories by meaning within the authenticated user's tenant scope. Results and relationships depend on the configured provider. An empty result can represent a handled provider failure and does not prove that no memories exist. Search does not provide pagination or a complete inventory.\n\nUse an authorized backend key with X-On-Behalf-Of and users\\:impersonate scope, or a publishable key with a user JWT. A configured user JWT can also authenticate directly. An effective user and tenant are required; raw identity headers do not grant authority. See the [memory cookbook](/managed-agents/memory-knowledge).\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Use remembered preferences in a returning user’s conversation](/managed-agents/memory-knowledge)",
      "slug": "/api/conversations/search-memories",
      "method": "POST",
      "path": "/api/v1/llm/search-memories",
      "requestSchema": "llm_v1_services_gateway_v1_SearchMemoriesRequest",
      "responseSchema": "llm_v1_services_gateway_v1_SearchMemoriesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Search results returned",
      "requestBodyRequired": true,
      "errors": {
        "400": {
          "description": "Invalid decoded request, including omitted topK or values outside their bounds, or missing tenant context."
        },
        "401": {
          "description": "Missing or invalid authentication, or no effective user."
        },
        "403": {
          "description": "Insufficient impersonation scope or required tenant membership."
        },
        "500": {
          "description": "Unexpected server failure."
        },
        "502": {
          "description": "Authentication upstream returned an unreadable or invalid response."
        },
        "503": {
          "description": "Authentication service unavailable."
        },
        "default": {
          "description": "Other failures may be forwarded from upstream. Error bodies vary by origin; this slice does not assert a single error envelope."
        }
      },
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        },
        {
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:listMemories",
      "operationId": "listMemories",
      "bundle": "conversations.yaml",
      "title": "List user memories",
      "description": "Returns memories in the effective user's scope. This operation has no pagination cursor or category filter. A capped response does not prove that the user has seen every stored record or provide a complete all-records traversal guarantee.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Use remembered preferences in a returning user’s conversation](/managed-agents/memory-knowledge)",
      "slug": "/api/conversations/list-memories",
      "method": "POST",
      "path": "/api/v1/llm/list-memories",
      "requestSchema": "llm_v1_services_gateway_v1_ListMemoriesRequest",
      "responseSchema": "llm_v1_services_gateway_v1_ListMemoriesResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Memories listed",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:getMemory",
      "operationId": "getMemory",
      "bundle": "conversations.yaml",
      "title": "Get a specific memory",
      "description": "Requests a memory by ID. Full project/user ownership checks are not currently enforced for these by-ID operations. They are not a supported access boundary for an untrusted end-user client. See [Memory](/managed-agents/memory-knowledge) for the current limits.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Use remembered preferences in a returning user’s conversation](/managed-agents/memory-knowledge)",
      "slug": "/api/conversations/get-memory",
      "method": "POST",
      "path": "/api/v1/llm/get-memory",
      "requestSchema": "llm_v1_services_gateway_v1_GetMemoryRequest",
      "responseSchema": "llm_v1_services_gateway_v1_GetMemoryResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Memory returned",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:updateMemory",
      "operationId": "updateMemory",
      "bundle": "conversations.yaml",
      "title": "Update a memory",
      "description": "Updates a memory by ID. Full project/user ownership checks are not currently enforced for these by-ID operations. They are not a supported access boundary for an untrusted end-user client. See [Memory](/managed-agents/memory-knowledge) for the current limits.\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Use remembered preferences in a returning user’s conversation](/managed-agents/memory-knowledge)",
      "slug": "/api/conversations/update-memory",
      "method": "POST",
      "path": "/api/v1/llm/update-memory",
      "requestSchema": "llm_v1_services_gateway_v1_UpdateMemoryRequest",
      "responseSchema": "llm_v1_services_gateway_v1_UpdateMemoryResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Memory updated",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    },
    {
      "key": "conversations:deleteMemory",
      "operationId": "deleteMemory",
      "bundle": "conversations.yaml",
      "title": "Delete a memory",
      "description": "Requests deletion of a memory by ID. Full project/user ownership checks are not currently enforced for these by-ID operations. They are not a supported access boundary for an untrusted end-user client. Deletion does not remove copies already included in conversation context or confirm backup erasure. See [Memory](/managed-agents/memory-knowledge).\n\nThe following access conditions are preserved as declared intent and are not implemented by generated code: Authorized scoped domain action.\n\nUse this in a guide: [Use remembered preferences in a returning user’s conversation](/managed-agents/memory-knowledge)",
      "slug": "/api/conversations/delete-memory",
      "method": "POST",
      "path": "/api/v1/llm/delete-memory",
      "requestSchema": "llm_v1_services_gateway_v1_DeleteMemoryRequest",
      "responseSchema": "llm_v1_services_gateway_v1_DeleteMemoryResponse",
      "mediaType": "application/json",
      "responseStatus": "200",
      "responseDescription": "Memory deleted",
      "requestBodyRequired": true,
      "errors": {},
      "security": [
        {
          "apiKeyAuth": [],
          "onBehalfOf": []
        },
        {
          "apiKeyAuth": [],
          "bearerAuth": []
        }
      ],
      "securitySchemes": {
        "apiKeyAuth": {
          "type": "apiKey",
          "in": "header",
          "name": "X-API-Key"
        },
        "onBehalfOf": {
          "type": "apiKey",
          "in": "header",
          "name": "X-On-Behalf-Of"
        },
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },
      "stability": "Preview",
      "declared_access": {
        "acts_for": "Person",
        "data_scope": "Tenant project",
        "condition_mode": "Explicit",
        "retry_safe": false,
        "exposures": [
          "Public API"
        ],
        "audiences": [
          {
            "audience": "App user",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          },
          {
            "audience": "Tenant backend",
            "meaning": "<p>Intended use: Authenticated person conversations, memory and tool use. Do not rely on this audience declaration as an enforced authentication or authorization boundary.</p>"
          }
        ],
        "access_conditions": [
          {
            "condition_name": "Authorized scoped domain action",
            "mode": "Enforcing",
            "meaning": "<p>Intended access requirements; current enforcement is not established: Require trusted person and tenant-project identity, validate object ownership and delegation, and preserve current policy/approval constraints. Identity supplied in the request body is not a trusted identity source. Intended audience: App user, Tenant backend. Authenticated person conversations, memory and tool use.</p>"
          }
        ]
      },
      "runtime_enforcement": false
    }
  ],
  "roots": [
    {
      "doctype": "API Event",
      "name": "9i3l70sln0",
      "lineage_root": "u1s768tpmf",
      "payload_symbol": "llm.v1.common.v1.LLMMessagePublishedEvent",
      "delivery_intent_enforced": false,
      "definition": {
        "title": "LLMMessagePublishedEvent",
        "payload_revision": "8s8gtmk21l",
        "delivery_guarantee": "",
        "publication_mode": "",
        "ordering": "",
        "retention_seconds": null,
        "live_write_intent": "Append",
        "stability": "",
        "meaning": "<p>Domain event published when a new assistant/tool message is produced.</p>",
        "notes": "<p>In the live conversation view, messages append to the message history. Message sequence identifies each entry; repeated delivery updates the same entry.</p>\n<p>Event-specific delivery guarantees, ordering, retention and lifecycle status are unspecified.</p>",
        "retention_intent": null,
        "ordering_key_meaning": null,
        "live_destination_meaning": "<p>Conversation message view, with each message addressed by its sequence.</p>",
        "live_child_key_meaning": "<p>Message sequence identifies the entry; repeated delivery updates that same entry.</p>",
        "deprecation_reason": null,
        "producers": [],
        "subscribers": [],
        "audiences": [
          {
            "audience": "Live view",
            "meaning": "<p>Current conversation client projection.</p>"
          },
          {
            "audience": "Tenant webhook",
            "meaning": "<p>Sent to subscribed tenant webhook endpoints.</p>"
          }
        ]
      },
      "documentation": {
        "meaning": "Domain event published when a new assistant/tool message is produced.\nUse this in a guide: [Event catalog](/api/events) · [Automate recurring agent work](/core-platform/scheduling/build-scheduled-agents)\n",
        "notes": "In the live conversation view, messages append to the message history. Message sequence identifies each entry; repeated delivery updates the same entry.\n\nEvent-specific delivery guarantees, ordering, retention and lifecycle status are unspecified.",
        "retention_intent": "",
        "ordering_key_meaning": "",
        "live_destination_meaning": "Conversation message view, with each message addressed by its sequence.",
        "live_child_key_meaning": "Message sequence identifies the entry; repeated delivery updates that same entry.",
        "deprecation_reason": "",
        "payload": {
          "title": "LLMMessagePublishedEvent",
          "slug": "/api/models/schema-po1qsocerv"
        },
        "producers": [],
        "subscribers": [],
        "audiences": [
          {
            "audience": "Live view",
            "meaning": "Current conversation client projection."
          },
          {
            "audience": "Tenant webhook",
            "meaning": "Sent to subscribed tenant webhook endpoints."
          }
        ]
      }
    },
    {
      "doctype": "API Event",
      "name": "84ptg9ajvv",
      "lineage_root": "u1u0sjgmch",
      "payload_symbol": "llm.v1.common.v1.LLMGenerationCompletedEvent",
      "delivery_intent_enforced": false,
      "definition": {
        "title": "LLMGenerationCompletedEvent",
        "payload_revision": "7opl755dn8",
        "delivery_guarantee": "",
        "publication_mode": "",
        "ordering": "",
        "retention_seconds": null,
        "live_write_intent": "Replace",
        "stability": "",
        "meaning": "<p>Event emitted when a generation run reaches a terminal state. The event context identifies the associated conversation.</p>",
        "notes": "<p>In the live view, this event replaces the status view for the individual generation run within its conversation.</p>\n<p>Event-specific delivery guarantees, ordering, retention and lifecycle status are unspecified.</p>",
        "retention_intent": null,
        "ordering_key_meaning": null,
        "live_destination_meaning": "<p>Status view for the individual generation run within its conversation.</p>",
        "live_child_key_meaning": null,
        "deprecation_reason": null,
        "producers": [],
        "subscribers": [],
        "audiences": [
          {
            "audience": "Live view",
            "meaning": "<p>Current conversation client projection.</p>"
          },
          {
            "audience": "Tenant webhook",
            "meaning": "<p>Sent to subscribed tenant webhook endpoints.</p>"
          }
        ]
      },
      "documentation": {
        "meaning": "Event emitted when a generation run reaches a terminal state. The event context identifies the associated conversation.\nUse this in a guide: [Integrations](/integrations) · [API Reference](/api) · [Event catalog](/api/events) · [Update your backend when an assistant finishes](/integrations/webhooks)\n",
        "notes": "In the live view, this event replaces the status view for the individual generation run within its conversation.\n\nEvent-specific delivery guarantees, ordering, retention and lifecycle status are unspecified.",
        "retention_intent": "",
        "ordering_key_meaning": "",
        "live_destination_meaning": "Status view for the individual generation run within its conversation.",
        "live_child_key_meaning": "",
        "deprecation_reason": "",
        "payload": {
          "title": "LLMGenerationCompletedEvent",
          "slug": "/api/models/schema-pntuu08p80"
        },
        "producers": [],
        "subscribers": [],
        "audiences": [
          {
            "audience": "Live view",
            "meaning": "Current conversation client projection."
          },
          {
            "audience": "Tenant webhook",
            "meaning": "Sent to subscribed tenant webhook endpoints."
          }
        ]
      }
    },
    {
      "doctype": "API Event",
      "name": "84rgqjjrl0",
      "lineage_root": "u20phhssrl",
      "payload_symbol": "llm.v1.common.v1.LLMGenerationStartedEvent",
      "delivery_intent_enforced": false,
      "definition": {
        "title": "LLMGenerationStartedEvent",
        "payload_revision": "7os6ju8g5c",
        "delivery_guarantee": "",
        "publication_mode": "",
        "ordering": "",
        "retention_seconds": null,
        "live_write_intent": "Replace",
        "stability": "",
        "meaning": "<p>Event emitted when a generation run starts. The event context identifies the associated conversation.</p>",
        "notes": "<p>In the live view, this event replaces the status view for the individual generation run within its conversation.</p>\n<p>Event-specific delivery guarantees, ordering, retention and lifecycle status are unspecified.</p>",
        "retention_intent": null,
        "ordering_key_meaning": null,
        "live_destination_meaning": "<p>Status view for the individual generation run within its conversation.</p>",
        "live_child_key_meaning": null,
        "deprecation_reason": null,
        "producers": [],
        "subscribers": [],
        "audiences": [
          {
            "audience": "Live view",
            "meaning": "<p>Current conversation client projection.</p>"
          },
          {
            "audience": "Tenant webhook",
            "meaning": "<p>Sent to subscribed tenant webhook endpoints.</p>"
          }
        ]
      },
      "documentation": {
        "meaning": "Event emitted when a generation run starts. The event context identifies the associated conversation.\nUse this in a guide: [Event catalog](/api/events)\n",
        "notes": "In the live view, this event replaces the status view for the individual generation run within its conversation.\n\nEvent-specific delivery guarantees, ordering, retention and lifecycle status are unspecified.",
        "retention_intent": "",
        "ordering_key_meaning": "",
        "live_destination_meaning": "Status view for the individual generation run within its conversation.",
        "live_child_key_meaning": "",
        "deprecation_reason": "",
        "payload": {
          "title": "LLMGenerationStartedEvent",
          "slug": "/api/models/schema-pnv14jb39g"
        },
        "producers": [],
        "subscribers": [],
        "audiences": [
          {
            "audience": "Live view",
            "meaning": "Current conversation client projection."
          },
          {
            "audience": "Tenant webhook",
            "meaning": "Sent to subscribed tenant webhook endpoints."
          }
        ]
      }
    },
    {
      "doctype": "API Event",
      "name": "6vto7rka3s",
      "lineage_root": "u22bdqd1kd",
      "payload_symbol": "llm.v1.common.v1.ToolCallStartedEvent",
      "delivery_intent_enforced": false,
      "definition": {
        "title": "ToolCallStartedEvent",
        "payload_revision": "62v9me6kv5",
        "delivery_guarantee": "",
        "publication_mode": "",
        "ordering": "",
        "retention_seconds": null,
        "live_write_intent": "Replace",
        "stability": "",
        "meaning": "<p>Event for a tool call that has begun execution or is waiting for human approval. Check the event name and tool-call status to distinguish these cases; the event context identifies the conversation.</p>",
        "notes": "<p>In the live view, this event replaces the current tool activity view for the conversation. The payload can represent execution starting or a request for human approval; use the event name and tool-call status to distinguish these cases.</p>\n<p>Event-specific delivery guarantees, ordering, retention and lifecycle status are unspecified.</p>",
        "retention_intent": null,
        "ordering_key_meaning": null,
        "live_destination_meaning": "<p>Current tool activity view for the conversation.</p>",
        "live_child_key_meaning": null,
        "deprecation_reason": null,
        "producers": [],
        "subscribers": [],
        "audiences": [
          {
            "audience": "Live view",
            "meaning": "<p>Current conversation client projection.</p>"
          },
          {
            "audience": "Tenant webhook",
            "meaning": "<p>Sent to subscribed tenant webhook endpoints.</p>"
          }
        ]
      },
      "documentation": {
        "meaning": "Event for a tool call that has begun execution or is waiting for human approval. Check the event name and tool-call status to distinguish these cases; the event context identifies the conversation.\nUse this in a guide: [Event catalog](/api/events) · [Tool policy resolution and lifecycle](/api/tool-execution/policies)\n",
        "notes": "In the live view, this event replaces the current tool activity view for the conversation. The payload can represent execution starting or a request for human approval; use the event name and tool-call status to distinguish these cases.\n\nEvent-specific delivery guarantees, ordering, retention and lifecycle status are unspecified.",
        "retention_intent": "",
        "ordering_key_meaning": "",
        "live_destination_meaning": "Current tool activity view for the conversation.",
        "live_child_key_meaning": "",
        "deprecation_reason": "",
        "payload": {
          "title": "ToolCallStartedEvent",
          "slug": "/api/models/schema-po5rioe4il"
        },
        "producers": [],
        "subscribers": [],
        "audiences": [
          {
            "audience": "Live view",
            "meaning": "Current conversation client projection."
          },
          {
            "audience": "Tenant webhook",
            "meaning": "Sent to subscribed tenant webhook endpoints."
          }
        ]
      }
    },
    {
      "doctype": "API Event",
      "name": "6vrs2kmfd4",
      "lineage_root": "u249vf7739",
      "payload_symbol": "llm.v1.common.v1.ToolCallCompletedEvent",
      "delivery_intent_enforced": false,
      "definition": {
        "title": "ToolCallCompletedEvent",
        "payload_revision": "62stl45kr4",
        "delivery_guarantee": "",
        "publication_mode": "",
        "ordering": "",
        "retention_seconds": null,
        "live_write_intent": "Replace",
        "stability": "",
        "meaning": "<p>Event emitted when a tool call reaches COMPLETED, FAILED, CANCELLED or TIMED_OUT, including calls that required human approval.</p>",
        "notes": "<p>In the live view, this event replaces the current tool activity view for the conversation.</p>\n<p>Event-specific delivery guarantees, ordering, retention and lifecycle status are unspecified.</p>",
        "retention_intent": null,
        "ordering_key_meaning": null,
        "live_destination_meaning": "<p>Current tool activity view for the conversation.</p>",
        "live_child_key_meaning": null,
        "deprecation_reason": null,
        "producers": [],
        "subscribers": [],
        "audiences": [
          {
            "audience": "Live view",
            "meaning": "<p>Current conversation client projection.</p>"
          },
          {
            "audience": "Tenant webhook",
            "meaning": "<p>Sent to subscribed tenant webhook endpoints.</p>"
          }
        ]
      },
      "documentation": {
        "meaning": "Event emitted when a tool call reaches COMPLETED, FAILED, CANCELLED or TIMED\\_OUT, including calls that required human approval.\nUse this in a guide: [Event catalog](/api/events)\n",
        "notes": "In the live view, this event replaces the current tool activity view for the conversation.\n\nEvent-specific delivery guarantees, ordering, retention and lifecycle status are unspecified.",
        "retention_intent": "",
        "ordering_key_meaning": "",
        "live_destination_meaning": "Current tool activity view for the conversation.",
        "live_child_key_meaning": "",
        "deprecation_reason": "",
        "payload": {
          "title": "ToolCallCompletedEvent",
          "slug": "/api/models/schema-po3pkfshjg"
        },
        "producers": [],
        "subscribers": [],
        "audiences": [
          {
            "audience": "Live view",
            "meaning": "Current conversation client projection."
          },
          {
            "audience": "Tenant webhook",
            "meaning": "Sent to subscribed tenant webhook endpoints."
          }
        ]
      }
    },
    {
      "doctype": "API Enum",
      "name": "6tv1pafpa2",
      "lineage_root": "q8qp045fpk",
      "source_symbol": "llm.v1.common.v1.Provider",
      "key": "API Enum/6tv1pafpa2",
      "kind": "API Enum",
      "title": "Provider",
      "slug": "/api/models/enum-q8qp045fpk",
      "serialization": "json-names"
    },
    {
      "doctype": "API Enum",
      "name": "6u1ita10u0",
      "lineage_root": "q97i14qn23",
      "source_symbol": "llm.v1.common.v1.ToolCategory",
      "key": "API Enum/6u1ita10u0",
      "kind": "API Enum",
      "title": "ToolCategory",
      "slug": "/api/models/enum-q97i14qn23",
      "serialization": "json-names"
    },
    {
      "doctype": "API Enum",
      "name": "6u3eomk7tb",
      "lineage_root": "q9e32qbsm3",
      "source_symbol": "llm.v1.common.v1.VectorMetric",
      "key": "API Enum/6u3eomk7tb",
      "kind": "API Enum",
      "title": "VectorMetric",
      "slug": "/api/models/enum-q9e32qbsm3",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "6up6drbioc",
      "lineage_root": "pq9d837o76",
      "source_symbol": "auth.v1.common.v1.AuthorizationModel",
      "key": "API Schema/6up6drbioc",
      "kind": "API Schema",
      "title": "AuthorizationModel",
      "slug": "/api/models/schema-pq9d837o76",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "6urseekt57",
      "lineage_root": "pqh3ei5p5l",
      "source_symbol": "auth.v1.common.v1.Store",
      "key": "API Schema/6urseekt57",
      "kind": "API Schema",
      "title": "Store",
      "slug": "/api/models/schema-pqh3ei5p5l",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "62ajd5h7r5",
      "lineage_root": "pqjdejpl2g",
      "source_symbol": "auth.v1.common.v1.TupleKey",
      "key": "API Schema/62ajd5h7r5",
      "kind": "API Schema",
      "title": "TupleKey",
      "slug": "/api/models/schema-pqjdejpl2g",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "62c40oktj2",
      "lineage_root": "pql723cqr4",
      "source_symbol": "auth.v1.common.v1.UserSet",
      "key": "API Schema/62c40oktj2",
      "kind": "API Schema",
      "title": "UserSet",
      "slug": "/api/models/schema-pql723cqr4",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "6282cia2fj",
      "lineage_root": "1fc03re4nc",
      "source_symbol": "google.protobuf.StringValue",
      "key": "API Schema/6282cia2fj",
      "kind": "API Schema",
      "title": "StringValue",
      "slug": "/api/models/schema-1fc03re4nc",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "9frhv4euve",
      "lineage_root": "q69v86pv94",
      "source_symbol": "llm.v1.actors.conversation.v1.ReceiveMessageRequest",
      "key": "API Schema/9frhv4euve",
      "kind": "API Schema",
      "title": "ReceiveMessageRequest",
      "slug": "/api/models/schema-q69v86pv94",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "626klhca0u",
      "lineage_root": "q7hl8fcm9r",
      "source_symbol": "llm.v1.common.v1.ConversationBranch",
      "key": "API Schema/626klhca0u",
      "kind": "API Schema",
      "title": "ConversationBranch",
      "slug": "/api/models/schema-q7hl8fcm9r",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "6v7cprckcj",
      "lineage_root": "q81ihe4v3e",
      "source_symbol": "llm.v1.common.v1.EmbeddingConfig",
      "key": "API Schema/6v7cprckcj",
      "kind": "API Schema",
      "title": "EmbeddingConfig",
      "slug": "/api/models/schema-q81ihe4v3e",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "62d20s50a7",
      "lineage_root": "q8egnnm4a3",
      "source_symbol": "llm.v1.common.v1.MCPServerConfig",
      "key": "API Schema/62d20s50a7",
      "kind": "API Schema",
      "title": "MCPServerConfig",
      "slug": "/api/models/schema-q8egnnm4a3",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "6vbcrt8mlp",
      "lineage_root": "q8s584s888",
      "source_symbol": "llm.v1.common.v1.ScoredVector",
      "key": "API Schema/6vbcrt8mlp",
      "kind": "API Schema",
      "title": "ScoredVector",
      "slug": "/api/models/schema-q8s584s888",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "t0tqko5pgb",
      "lineage_root": "q92tfl8qp2",
      "source_symbol": "llm.v1.common.v1.TextDocument",
      "key": "API Schema/t0tqko5pgb",
      "kind": "API Schema",
      "title": "TextDocument",
      "slug": "/api/models/schema-q92tfl8qp2",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "6vhb5mpe0m",
      "lineage_root": "q9cp251mpk",
      "source_symbol": "llm.v1.common.v1.Vector",
      "key": "API Schema/6vhb5mpe0m",
      "kind": "API Schema",
      "title": "Vector",
      "slug": "/api/models/schema-q9cp251mpk",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "6vk7rqoi5v",
      "lineage_root": "qbff0c5l2f",
      "source_symbol": "llm.v1.services.eval.v1.DatasetRunItem",
      "key": "API Schema/6vk7rqoi5v",
      "kind": "API Schema",
      "title": "DatasetRunItem",
      "slug": "/api/models/schema-qbff0c5l2f",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "e0ru3nm27c",
      "lineage_root": "qbs1n8ja02",
      "source_symbol": "llm.v1.services.eval.v1.EvalCommentSuppressionState",
      "key": "API Schema/e0ru3nm27c",
      "kind": "API Schema",
      "title": "EvalCommentSuppressionState",
      "slug": "/api/models/schema-qbs1n8ja02",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "9ftjkkjhfa",
      "lineage_root": "qj0o2cvv4e",
      "source_symbol": "llm.v1.workflows.generation.v1.ClientToolDispatch",
      "key": "API Schema/9ftjkkjhfa",
      "kind": "API Schema",
      "title": "ClientToolDispatch",
      "slug": "/api/models/schema-qj0o2cvv4e",
      "serialization": "json-names"
    },
    {
      "doctype": "API Schema",
      "name": "i828te0das",
      "lineage_root": "s6i1d2bv7o",
      "source_symbol": "platform.v1.services.scheduler.v1.ScheduledTriggerEnvelope",
      "key": "API Schema/i828te0das",
      "kind": "API Schema",
      "title": "ScheduledTriggerEnvelope",
      "slug": "/api/models/schema-s6i1d2bv7o",
      "serialization": "json-names"
    }
  ],
  "schemas": {
    "llm_v1_services_mcp_v1_CreateCustomMCPServerRequest": {
      "type": "object",
      "description": "Inputs for registering a tenant-owned MCP server and its connection configuration.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Empty → \"default\"",
          "x-presence": "implicit"
        },
        "server": {
          "description": "MCP server configuration to register.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_mcp_v1_CustomMCPServerInput"
            }
          ],
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "server"
      ],
      "required": [
        "server"
      ]
    },
    "llm_v1_services_mcp_v1_CustomMCPServerInput": {
      "type": "object",
      "description": "A project-scoped, HTTP-only MCP server definition, keyed (tenant\\_id, project\\_id, server\\_id). Its wire ID is \"custom:\\{server\\_id}\".\n\nCredentials must be stored as secret references; inline tokens must not be persisted in this server definition.\n\nauth\\_type selects the required credential fields. Authenticated modes require auth\\_secret\\_ref; NONE requires it to be empty. HEADER requires auth\\_header\\_name and QUERY requires auth\\_query\\_param; those names must be empty for every other mode. Inconsistent combinations are rejected before storage. Inline credentials are not accepted.\n\n### Input constraints\n\n### server\\_id\n\nThe server\\_id must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, or hyphen.\n\n### auth\\_header\\_name\n\nThe auth\\_header\\_name may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, or one of these literal punctuation characters: ! # $ % & ' \\* + . ^ \\_ \\` | \\~ -. No other character is accepted.\n\n### auth\\_query\\_param\n\nThe auth\\_query\\_param may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, period, underscore, tilde, or hyphen. No other character is accepted.\n\n### request\\_timeout\n\nThe request\\_timeout duration must be no greater than 120 seconds.",
      "properties": {
        "serverId": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9-]{0,62}$",
          "description": "Unique within the project.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^[a-z0-9][a-z0-9-]{0,62}$"
            }
          },
          "x-validation-scope": "request"
        },
        "displayName": {
          "type": "string",
          "maxLength": 200,
          "description": "Display name used for the registered MCP server.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "200"
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "maxLength": 1024,
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "1024"
            }
          },
          "x-validation-scope": "request"
        },
        "endpoint": {
          "type": "string",
          "maxLength": 2048,
          "pattern": "^https://",
          "format": "uri",
          "description": "HTTPS endpoint for Streamable HTTP; local and standard-input/output transports are unsupported. The egress guard also rejects prohibited destinations such as metadata, loopback, private-network and in-cluster addresses. HTTPS alone does not satisfy these destination checks.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "2048",
              "pattern": "^https://",
              "uri": true
            }
          },
          "x-validation-scope": "request"
        },
        "authType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_BEARER",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_HEADER",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_QUERY"
              ],
              "x-enumDescriptions": {
                "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE": "Send requests without attaching a secret for authentication.",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_BEARER": "Send the secret as a Bearer token in the Authorization header.\n\nAuthorization: Bearer \\<secret>",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_HEADER": "Send the secret in the configured custom header.\n\n\\<auth\\_header\\_name>: \\<secret>",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_QUERY": "Add the secret as the configured URL query parameter when connecting; the stored endpoint remains the base URL.\n\n\\<endpoint>?\\<auth\\_query\\_param>=\\<secret>. The secret is joined to the URL at dial time only — the endpoint column and the cache payload keep the bare URL. Exists because some vendors (Tavily) document no header alternative."
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1,
                2,
                3
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE",
              "number": 0,
              "canonical": true,
              "description": "Send requests without attaching a secret for authentication."
            },
            {
              "name": "CUSTOM_MCP_SERVER_AUTH_TYPE_BEARER",
              "number": 1,
              "canonical": true,
              "description": "Send the secret as a Bearer token in the Authorization header.\n\nAuthorization: Bearer \\<secret>"
            },
            {
              "name": "CUSTOM_MCP_SERVER_AUTH_TYPE_HEADER",
              "number": 2,
              "canonical": true,
              "description": "Send the secret in the configured custom header.\n\n\\<auth\\_header\\_name>: \\<secret>"
            },
            {
              "name": "CUSTOM_MCP_SERVER_AUTH_TYPE_QUERY",
              "number": 3,
              "canonical": true,
              "description": "Add the secret as the configured URL query parameter when connecting; the stored endpoint remains the base URL.\n\n\\<endpoint>?\\<auth\\_query\\_param>=\\<secret>. The secret is joined to the URL at dial time only — the endpoint column and the cache payload keep the bare URL. Exists because some vendors (Tavily) document no header alternative."
            }
          ],
          "x-enum-description": "How credentials are attached to requests to a tenant-configured MCP server. Credentials are held by reference; inline credential values are neither accepted nor persisted.",
          "description": "Authentication mechanism configured for the MCP server.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "authSecretRef": {
          "description": "Required credential reference for BEARER, HEADER and QUERY authentication. Resolves within this server's tenant and project; only the secret name is returned, never its value.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_secretmanager_v1_SecretRefInput"
            }
          ]
        },
        "authHeaderName": {
          "type": "string",
          "pattern": "^([A-Za-z0-9!#$%&'*+.^_`|~-]{1,128})?$",
          "description": "Name of the custom authentication header. The egress guard also rejects protected header names; satisfying the field's character pattern alone does not permit every header.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^([A-Za-z0-9!#$%&'*+.^_`|~-]{1,128})?$"
            }
          },
          "x-validation-scope": "request"
        },
        "authQueryParam": {
          "type": "string",
          "pattern": "^([A-Za-z0-9._~-]{1,128})?$",
          "description": "Required for QUERY auth; the vendor's parameter name (e.g. \"tavilyApiKey\").\n\nRestricted to RFC 3986 unreserved characters, which is NOT the same set as auth\\_header\\_name's RFC 7230 tchar: that set contains '&' (would append a second parameter), '#' (would truncate the URL at a fragment), '%' (would open a malformed escape) and '+' (decodes as a space). The query-parameter name uses its own character set.\n\nEmpty is allowed — populated only for QUERY auth.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^([A-Za-z0-9._~-]{1,128})?$"
            }
          },
          "x-validation-scope": "request"
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this configuration is enabled.",
          "x-presence": "implicit"
        },
        "requestTimeout": {
          "type": "string",
          "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,9})?s$",
          "description": "Time allowed for a remote request. Omission or a nonpositive duration uses 30 seconds; positive durations below one second are raised to one second. Long waits can delay the conversation while the remote server is unavailable.",
          "x-presence": "message",
          "x-protovalidate": {
            "duration": {
              "lte": "120s"
            }
          },
          "x-validation-scope": "request"
        },
        "version": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Output-only revision assigned by the store and incremented on updates. Ignored on writes.",
          "x-presence": "implicit"
        },
        "createdBy": {
          "type": "string",
          "description": "Output-only identity of the caller that registered the server. Ignored on writes.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Output-only creation time assigned by the store. Ignored on writes.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Output-only last-update time assigned by the store. Ignored on writes.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "CustomMCPServer",
        "url": "/api/models/schema-p1cuh9jgfq#request"
      },
      "x-request-required": [
        "serverId",
        "endpoint"
      ],
      "required": [
        "serverId",
        "endpoint"
      ]
    },
    "platform_v1_services_secretmanager_v1_SecretRefInput": {
      "type": "object",
      "description": "Reference to a secret within the same tenant and project as the resource that uses it. Cross-project and cross-tenant secret references are not supported.\n\nSecret values are write-only through the project secret API: writes accept a value and return metadata, while read operations return metadata without the value. Resource references name a secret within their own scope rather than carrying its value or an alternate tenant or project.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9._-]{0,62}$",
          "description": "Name identifying the secret within its project.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^[a-z0-9][a-z0-9._-]{0,62}$"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-reference-model": {
        "title": "SecretRef",
        "url": "/api/models/schema-opqho625u2#request"
      },
      "x-request-required": [
        "name"
      ],
      "required": [
        "name"
      ]
    },
    "llm_v1_services_mcp_v1_CreateCustomMCPServerResponse": {
      "type": "object",
      "description": "Result payload for registering a tenant-owned MCP server and its connection configuration.",
      "properties": {
        "server": {
          "description": "MCP server configuration returned after registration.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_mcp_v1_CustomMCPServer"
            }
          ]
        }
      }
    },
    "llm_v1_services_mcp_v1_CustomMCPServer": {
      "type": "object",
      "description": "A project-scoped, HTTP-only MCP server definition, keyed (tenant\\_id, project\\_id, server\\_id). Its wire ID is \"custom:\\{server\\_id}\".\n\nCredentials must be stored as secret references; inline tokens must not be persisted in this server definition.\n\nauth\\_type selects the required credential fields. Authenticated modes require auth\\_secret\\_ref; NONE requires it to be empty. HEADER requires auth\\_header\\_name and QUERY requires auth\\_query\\_param; those names must be empty for every other mode. Inconsistent combinations are rejected before storage. Inline credentials are not accepted.\n\n### Input constraints\n\n### server\\_id\n\nThe server\\_id must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, or hyphen.\n\n### auth\\_header\\_name\n\nThe auth\\_header\\_name may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, or one of these literal punctuation characters: ! # $ % & ' \\* + . ^ \\_ \\` | \\~ -. No other character is accepted.\n\n### auth\\_query\\_param\n\nThe auth\\_query\\_param may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, period, underscore, tilde, or hyphen. No other character is accepted.\n\n### request\\_timeout\n\nThe request\\_timeout duration must be no greater than 120 seconds.",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "Unique within the project.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^[a-z0-9][a-z0-9-]{0,62}$"
            }
          },
          "x-validation-scope": "request"
        },
        "displayName": {
          "type": "string",
          "description": "Display name used for the registered MCP server.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "200"
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "1024"
            }
          },
          "x-validation-scope": "request"
        },
        "endpoint": {
          "type": "string",
          "description": "HTTPS endpoint for Streamable HTTP; local and standard-input/output transports are unsupported. The egress guard also rejects prohibited destinations such as metadata, loopback, private-network and in-cluster addresses. HTTPS alone does not satisfy these destination checks.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "2048",
              "pattern": "^https://",
              "uri": true
            }
          },
          "x-validation-scope": "request"
        },
        "authType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_BEARER",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_HEADER",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_QUERY"
              ],
              "x-enumDescriptions": {
                "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE": "Send requests without attaching a secret for authentication.",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_BEARER": "Send the secret as a Bearer token in the Authorization header.\n\nAuthorization: Bearer \\<secret>",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_HEADER": "Send the secret in the configured custom header.\n\n\\<auth\\_header\\_name>: \\<secret>",
                "CUSTOM_MCP_SERVER_AUTH_TYPE_QUERY": "Add the secret as the configured URL query parameter when connecting; the stored endpoint remains the base URL.\n\n\\<endpoint>?\\<auth\\_query\\_param>=\\<secret>. The secret is joined to the URL at dial time only — the endpoint column and the cache payload keep the bare URL. Exists because some vendors (Tavily) document no header alternative."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE",
              "number": 0,
              "canonical": true,
              "description": "Send requests without attaching a secret for authentication."
            },
            {
              "name": "CUSTOM_MCP_SERVER_AUTH_TYPE_BEARER",
              "number": 1,
              "canonical": true,
              "description": "Send the secret as a Bearer token in the Authorization header.\n\nAuthorization: Bearer \\<secret>"
            },
            {
              "name": "CUSTOM_MCP_SERVER_AUTH_TYPE_HEADER",
              "number": 2,
              "canonical": true,
              "description": "Send the secret in the configured custom header.\n\n\\<auth\\_header\\_name>: \\<secret>"
            },
            {
              "name": "CUSTOM_MCP_SERVER_AUTH_TYPE_QUERY",
              "number": 3,
              "canonical": true,
              "description": "Add the secret as the configured URL query parameter when connecting; the stored endpoint remains the base URL.\n\n\\<endpoint>?\\<auth\\_query\\_param>=\\<secret>. The secret is joined to the URL at dial time only — the endpoint column and the cache payload keep the bare URL. Exists because some vendors (Tavily) document no header alternative."
            }
          ],
          "x-enum-description": "How credentials are attached to requests to a tenant-configured MCP server. Credentials are held by reference; inline credential values are neither accepted nor persisted.",
          "description": "Authentication mechanism configured for the MCP server.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "authSecretRef": {
          "description": "Required credential reference for BEARER, HEADER and QUERY authentication. Resolves within this server's tenant and project; only the secret name is returned, never its value.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_secretmanager_v1_SecretRef"
            }
          ]
        },
        "authHeaderName": {
          "type": "string",
          "description": "Name of the custom authentication header. The egress guard also rejects protected header names; satisfying the field's character pattern alone does not permit every header.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^([A-Za-z0-9!#$%&'*+.^_`|~-]{1,128})?$"
            }
          },
          "x-validation-scope": "request"
        },
        "authQueryParam": {
          "type": "string",
          "description": "Required for QUERY auth; the vendor's parameter name (e.g. \"tavilyApiKey\").\n\nRestricted to RFC 3986 unreserved characters, which is NOT the same set as auth\\_header\\_name's RFC 7230 tchar: that set contains '&' (would append a second parameter), '#' (would truncate the URL at a fragment), '%' (would open a malformed escape) and '+' (decodes as a space). The query-parameter name uses its own character set.\n\nEmpty is allowed — populated only for QUERY auth.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^([A-Za-z0-9._~-]{1,128})?$"
            }
          },
          "x-validation-scope": "request"
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this configuration is enabled.",
          "x-presence": "implicit"
        },
        "requestTimeout": {
          "type": "string",
          "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,9})?s$",
          "description": "Time allowed for a remote request. Omission or a nonpositive duration uses 30 seconds; positive durations below one second are raised to one second. Long waits can delay the conversation while the remote server is unavailable.",
          "x-presence": "message",
          "x-protovalidate": {
            "duration": {
              "lte": "120s"
            }
          },
          "x-validation-scope": "request"
        },
        "version": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Output-only revision assigned by the store and incremented on updates. Ignored on writes.",
          "x-presence": "implicit"
        },
        "createdBy": {
          "type": "string",
          "description": "Output-only identity of the caller that registered the server. Ignored on writes.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Output-only creation time assigned by the store. Ignored on writes.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Output-only last-update time assigned by the store. Ignored on writes.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "CustomMCPServer",
        "url": "/api/models/schema-p1cuh9jgfq#response"
      },
      "x-request-required": [
        "serverId",
        "endpoint"
      ]
    },
    "platform_v1_services_secretmanager_v1_SecretRef": {
      "type": "object",
      "description": "Reference to a secret within the same tenant and project as the resource that uses it. Cross-project and cross-tenant secret references are not supported.\n\nSecret values are write-only through the project secret API: writes accept a value and return metadata, while read operations return metadata without the value. Resource references name a secret within their own scope rather than carrying its value or an alternate tenant or project.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name identifying the secret within its project.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^[a-z0-9][a-z0-9._-]{0,62}$"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-reference-model": {
        "title": "SecretRef",
        "url": "/api/models/schema-opqho625u2#response"
      },
      "x-request-required": [
        "name"
      ]
    },
    "llm_v1_services_mcp_v1_GetCustomMCPServerRequest": {
      "type": "object",
      "description": "Inputs for reading a tenant-owned MCP server registration.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "serverId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the MCP server associated with the operation or tool.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "serverId"
      ],
      "required": [
        "serverId"
      ]
    },
    "llm_v1_services_mcp_v1_GetCustomMCPServerResponse": {
      "type": "object",
      "description": "Result payload for reading a tenant-owned MCP server registration.",
      "properties": {
        "server": {
          "description": "MCP server configuration returned by the lookup.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_mcp_v1_CustomMCPServer"
            }
          ]
        }
      }
    },
    "llm_v1_services_mcp_v1_ListCustomMCPServersRequest": {
      "type": "object",
      "description": "Inputs for listing MCP server registrations belonging to the tenant.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "authSecretNameFilter": {
          "type": "string",
          "description": "When set, return only MCP servers whose auth\\_secret\\_ref names this secret.",
          "x-presence": "implicit"
        },
        "includeDisabled": {
          "type": "boolean",
          "description": "Default false → only enabled servers.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_mcp_v1_ListCustomMCPServersResponse": {
      "type": "object",
      "description": "Result payload for listing MCP server registrations belonging to the tenant.",
      "properties": {
        "servers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_mcp_v1_CustomMCPServer"
          },
          "description": "MCP server configurations returned by the listing.",
          "x-presence": "collection"
        },
        "total": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of entries reported by the listing.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_mcp_v1_UpdateCustomMCPServerRequest": {
      "type": "object",
      "description": "Inputs for changing a tenant-owned MCP server’s connection configuration.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "serverId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the MCP server associated with the operation or tool.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "server": {
          "description": "MCP server configuration to apply.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_mcp_v1_CustomMCPServerInput"
            }
          ],
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "serverId",
        "server"
      ],
      "required": [
        "serverId",
        "server"
      ]
    },
    "llm_v1_services_mcp_v1_UpdateCustomMCPServerResponse": {
      "type": "object",
      "description": "Result payload for changing a tenant-owned MCP server’s connection configuration.",
      "properties": {
        "server": {
          "description": "Updated MCP server configuration.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_mcp_v1_CustomMCPServer"
            }
          ]
        }
      }
    },
    "llm_v1_services_mcp_v1_DeleteCustomMCPServerRequest": {
      "type": "object",
      "description": "Inputs for removing a tenant-owned MCP server registration.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "serverId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the MCP server associated with the operation or tool.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "serverId"
      ],
      "required": [
        "serverId"
      ]
    },
    "llm_v1_services_mcp_v1_DeleteCustomMCPServerResponse": {
      "type": "object",
      "description": "Result payload for removing a tenant-owned MCP server registration.",
      "properties": {
        "deleted": {
          "type": "boolean",
          "description": "False when the server did not exist; the call still succeeds.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_mcp_v1_TestCustomMCPServerConnectionRequest": {
      "type": "object",
      "description": "Inputs for testing connectivity and tool discovery for a tenant-owned MCP server.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "serverId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the MCP server associated with the operation or tool.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "serverId"
      ],
      "required": [
        "serverId"
      ]
    },
    "llm_v1_services_mcp_v1_TestCustomMCPServerConnectionResponse": {
      "type": "object",
      "description": "Result payload for testing connectivity and tool discovery for a tenant-owned MCP server.",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Whether the operation reports a successful result.",
          "x-presence": "implicit"
        },
        "toolCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of tools reported by the MCP server.",
          "x-presence": "implicit"
        },
        "latencyMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Measured MCP connection-test latency, in milliseconds.",
          "x-presence": "implicit"
        },
        "error": {
          "type": "string",
          "description": "Sanitized failure reason. Never contains the resolved credential, the auth header, or internal path details.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_scheduler_gateway_v1_CreateJobRequest": {
      "type": "object",
      "description": "Inputs for creating a scheduled job and its trigger settings.\n\n### Input constraints\n\n### interval\\_seconds\n\nThe interval\\_seconds value must be zero, meaning unset for this create request, or at least 60 seconds.\n\n### auto\\_pause\\_threshold\n\nThe auto\\_pause\\_threshold value must be zero, or between 3 and 100 inclusive.",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256,
          "description": "Human-readable name assigned to the scheduled job.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1",
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "description": "Human-readable explanation of the scheduled job.",
          "x-presence": "implicit"
        },
        "scheduleType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCHEDULE_TYPE_CRON",
                "SCHEDULE_TYPE_ONCE",
                "SCHEDULE_TYPE_RECURRING_INTERVAL"
              ],
              "x-enumDescriptions": {
                "SCHEDULE_TYPE_CRON": "Fire according to the configured cron expression and timezone. For example, `0 9 * * 1-5` selects 09:00 on weekdays in that timezone.",
                "SCHEDULE_TYPE_ONCE": "Fire once at the configured scheduled timestamp.",
                "SCHEDULE_TYPE_RECURRING_INTERVAL": "Fire repeatedly at the configured interval in seconds."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SCHEDULE_TYPE_CRON",
              "number": 0,
              "canonical": true,
              "description": "Fire according to the configured cron expression and timezone. For example, `0 9 * * 1-5` selects 09:00 on weekdays in that timezone."
            },
            {
              "name": "SCHEDULE_TYPE_ONCE",
              "number": 1,
              "canonical": true,
              "description": "Fire once at the configured scheduled timestamp."
            },
            {
              "name": "SCHEDULE_TYPE_RECURRING_INTERVAL",
              "number": 2,
              "canonical": true,
              "description": "Fire repeatedly at the configured interval in seconds."
            }
          ],
          "x-enum-description": "Expression format that determines when a scheduled job fires.",
          "description": "Selects which schedule expression to supply. For SCHEDULE\\_TYPE\\_CRON, set cron\\_expression and optionally timezone; for SCHEDULE\\_TYPE\\_ONCE, set scheduled\\_at; for SCHEDULE\\_TYPE\\_RECURRING\\_INTERVAL, set interval\\_seconds. Supply exactly one expression matching the chosen type.",
          "x-presence": "explicit"
        },
        "cronExpression": {
          "type": "string",
          "maxLength": 128,
          "pattern": "^$|^@\\w+(\\s.+)?$|^\\S+(\\s+\\S+){4,5}$",
          "description": "Cron expression evaluated in timezone. Accepts 5 or 6 fields and supported shorthand expressions. Examples: `0 9 * * 1-5` for weekdays at 09:00, `*/15 * * * *` for every 15 minutes, and `0 0 1 * *` for the first day of each month at midnight. `@daily` means `0 0 * * *`; `@hourly` means `0 * * * *`.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "128",
              "pattern": "^$|^@\\w+(\\s.+)?$|^\\S+(\\s+\\S+){4,5}$"
            }
          },
          "x-validation-scope": "request"
        },
        "timezone": {
          "type": "string",
          "description": "IANA timezone for cron evaluation, such as \"America/New\\_York\". Defaults to \"UTC\".",
          "x-presence": "implicit"
        },
        "scheduledAt": {
          "type": "string",
          "format": "date-time",
          "description": "Instant at which a one-time scheduled job should run.",
          "x-presence": "message"
        },
        "intervalSeconds": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Interval between scheduled triggers, in seconds.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "cel": [
              {
                "id": "native.zero.interval_seconds",
                "message": "interval_seconds must be 0 (unset) or at least 60",
                "expression": "this == 0 || this >= 60"
              }
            ]
          },
          "x-validation-scope": "request"
        },
        "target": {
          "description": "Destination and invocation settings for the scheduled job.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_scheduler_v1_ScheduleTargetInput"
            }
          ],
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        },
        "retryPolicy": {
          "description": "Attempt limits and backoff settings for the scheduled target.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_scheduler_v1_RetryPolicyInput"
            }
          ]
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Application-defined JSON metadata attached to the scheduled job.",
          "x-presence": "message"
        },
        "autoPauseThreshold": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Consecutive failure threshold used to pause the scheduled job. Omission or zero selects the default of 10. A nonzero override must be from 3 through 100. This create request does not expose a value that disables auto-pause.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "cel": [
              {
                "id": "native.zero.auto_pause_threshold",
                "message": "auto_pause_threshold must be 0 (select default 10) or in [3, 100]",
                "expression": "this == 0 || (this >= 3 && this <= 100)"
              }
            ]
          },
          "x-validation-scope": "request"
        },
        "ownerSubject": {
          "type": "string",
          "description": "Owner subject. When omitted, defaults to the caller derived from headers.",
          "x-presence": "implicit"
        },
        "externalId": {
          "type": "string",
          "maxLength": 255,
          "description": "Optional client-supplied identifier, unique within (tenant, project) among live schedules. Immutable once set. Must not start with \"sched\\_\".",
          "x-presence": "implicit",
          "x-protovalidate": {
            "cel": [
              {
                "id": "native.exclusion.0",
                "message": "external_id must not start with the reserved system-id prefix 'sched_'",
                "expression": "!this.startsWith(\"sched_\")"
              }
            ],
            "string": {
              "maxLen": "255"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "name",
        "target"
      ],
      "required": [
        "name",
        "target"
      ]
    },
    "platform_v1_services_scheduler_v1_ScheduleTargetInput": {
      "type": "object",
      "description": "ScheduleTarget describes the HTTP endpoint that receives each job invocation.",
      "properties": {
        "url": {
          "type": "string",
          "minLength": 1,
          "format": "uri",
          "description": "Destination URL. Must be a valid absolute URI.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1",
              "uri": true
            }
          },
          "x-validation-scope": "request"
        },
        "method": {
          "type": "string",
          "description": "HTTP method to use. Defaults to \"POST\".",
          "x-presence": "implicit"
        },
        "kind": {
          "type": "string",
          "minLength": 1,
          "description": "Logical kind used for routing and observability (e.g., \"notification\", \"llm\\_conversation\", \"metering\"). Required.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "payload": {
          "type": "object",
          "additionalProperties": true,
          "description": "Arbitrary JSON payload forwarded verbatim to the target.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "ScheduleTarget",
        "url": "/api/models/schema-1lbkptb5rj#request"
      },
      "x-request-required": [
        "url",
        "kind"
      ],
      "required": [
        "url",
        "kind"
      ]
    },
    "platform_v1_services_scheduler_v1_RetryPolicyInput": {
      "type": "object",
      "description": "RetryPolicy controls how failed executions are retried.",
      "properties": {
        "maxAttempts": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum delivery attempts (including the initial attempt). Default 10.",
          "x-presence": "implicit"
        },
        "initialBackoffMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Initial backoff before the first retry, in milliseconds. Default 5000.",
          "x-presence": "implicit"
        },
        "maxBackoffMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum backoff cap, in milliseconds. Default 1800000 (30 min).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "RetryPolicy",
        "url": "/api/models/schema-1l9ki2op1i#request"
      }
    },
    "platform_v1_services_scheduler_v1_Schedule": {
      "type": "object",
      "description": "Schedule is the canonical representation of a scheduled job.\n\nCreating any schedule type returns the `Schedule` resource directly, with the same shape used by get, pause and resume operations.\n\n[`triggerCount`](/api/models/schema-1ld0l8rmvg#response-field-triggercount): Cumulative firings.\n\n[`failureCount`](/api/models/schema-1ld0l8rmvg#response-field-failurecount): Cumulative failed first attempts; a later successful retry does not erase the earlier failure.\n\n[`consecutiveFailureCount`](/api/models/schema-1ld0l8rmvg#response-field-consecutivefailurecount): Current sequence of failed firings; a successful attempt resets it. This counter drives auto-pause.\n\nZero-valued counters can be omitted. Nonzero 64-bit counters are decimal JSON strings; preserve their integer precision.",
      "properties": {
        "scheduleId": {
          "type": "string",
          "description": "Server-assigned identifier of the scheduled job, prefixed with \"sched\\_\".",
          "x-presence": "implicit"
        },
        "tenantId": {
          "type": "string",
          "description": "Identifier of the tenant that owns or scopes this record.",
          "x-presence": "implicit"
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the project within the tenant that scopes this record.",
          "x-presence": "implicit"
        },
        "ownerSubject": {
          "type": "string",
          "description": "Subject identifier of the owning user or service account.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Human-readable name assigned to the scheduled job.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable explanation of the scheduled job.",
          "x-presence": "implicit"
        },
        "scheduleType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCHEDULE_TYPE_CRON",
                "SCHEDULE_TYPE_ONCE",
                "SCHEDULE_TYPE_RECURRING_INTERVAL"
              ],
              "x-enumDescriptions": {
                "SCHEDULE_TYPE_CRON": "Fire according to the configured cron expression and timezone. For example, `0 9 * * 1-5` selects 09:00 on weekdays in that timezone.",
                "SCHEDULE_TYPE_ONCE": "Fire once at the configured scheduled timestamp.",
                "SCHEDULE_TYPE_RECURRING_INTERVAL": "Fire repeatedly at the configured interval in seconds."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SCHEDULE_TYPE_CRON",
              "number": 0,
              "canonical": true,
              "description": "Fire according to the configured cron expression and timezone. For example, `0 9 * * 1-5` selects 09:00 on weekdays in that timezone."
            },
            {
              "name": "SCHEDULE_TYPE_ONCE",
              "number": 1,
              "canonical": true,
              "description": "Fire once at the configured scheduled timestamp."
            },
            {
              "name": "SCHEDULE_TYPE_RECURRING_INTERVAL",
              "number": 2,
              "canonical": true,
              "description": "Fire repeatedly at the configured interval in seconds."
            }
          ],
          "x-enum-description": "Expression format that determines when a scheduled job fires.",
          "description": "Schedule type and expression.",
          "x-presence": "explicit"
        },
        "cronExpression": {
          "type": "string",
          "description": "Cron expression. Populated when schedule\\_type is SCHEDULE\\_TYPE\\_CRON.",
          "x-presence": "implicit"
        },
        "timezone": {
          "type": "string",
          "description": "IANA timezone for cron evaluation. Default \"UTC\".",
          "x-presence": "implicit"
        },
        "scheduledAt": {
          "type": "string",
          "format": "date-time",
          "description": "Exact fire time. Populated when schedule\\_type is SCHEDULE\\_TYPE\\_ONCE.",
          "x-presence": "message"
        },
        "intervalSeconds": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Interval between firings in seconds. Populated when schedule\\_type is SCHEDULE\\_TYPE\\_RECURRING\\_INTERVAL.",
          "x-presence": "implicit"
        },
        "target": {
          "description": "Destination and invocation settings for the scheduled job.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_scheduler_v1_ScheduleTarget"
            }
          ]
        },
        "state": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCHEDULE_STATUS_ACTIVE",
                "SCHEDULE_STATUS_PAUSED",
                "SCHEDULE_STATUS_DELETED"
              ],
              "x-enumDescriptions": {
                "SCHEDULE_STATUS_ACTIVE": "The schedule is active and can trigger at its next matching time.",
                "SCHEDULE_STATUS_PAUSED": "The schedule is paused and does not trigger until resumed.",
                "SCHEDULE_STATUS_DELETED": "The schedule has been deleted; this is a schedule condition, not an execution outcome."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SCHEDULE_STATUS_ACTIVE",
              "number": 0,
              "canonical": true,
              "description": "The schedule is active and can trigger at its next matching time."
            },
            {
              "name": "SCHEDULE_STATUS_PAUSED",
              "number": 1,
              "canonical": true,
              "description": "The schedule is paused and does not trigger until resumed."
            },
            {
              "name": "SCHEDULE_STATUS_DELETED",
              "number": 2,
              "canonical": true,
              "description": "The schedule has been deleted; this is a schedule condition, not an execution outcome."
            }
          ],
          "x-enum-description": "Lifecycle condition that determines whether a scheduled job may trigger: active, paused, or deleted. This is separate from the outcome of an individual scheduled-job execution.",
          "description": "Lifecycle status controlling whether the scheduled job can trigger.",
          "x-presence": "explicit"
        },
        "retryPolicy": {
          "description": "Attempt limits and backoff settings for the scheduled target.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_scheduler_v1_RetryPolicy"
            }
          ]
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Application-defined JSON metadata attached to the scheduled job.",
          "x-presence": "message"
        },
        "autoPauseThreshold": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "If consecutive\\_failure\\_count reaches this threshold the job is auto-paused (state PAUSED, paused\\_by\\_subject \"system\\:auto-pause\").\n\nIt is compared against consecutive\\_failure\\_count, NOT failure\\_count. failure\\_count is cumulative for the schedule's whole life, so a healthy schedule that collects scattered failures over months would eventually exceed any threshold and pause itself forever.\n\nA stored threshold of 0 disables auto-pause; otherwise the threshold is from 3 through 100. The public create request uses 0 or omission to select the default of 10, and the public update request uses 0 or omission to leave the current threshold unchanged. These public requests do not provide a disable control.",
          "x-presence": "implicit"
        },
        "externalId": {
          "type": "string",
          "description": "Client-supplied external id. Echoed back when set; empty otherwise. Optional, immutable, unique within (tenant\\_id, project\\_id) among live schedules. Never starts with the reserved system-id prefix \"sched\\_\".",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time at which the scheduled job was created.",
          "x-presence": "message"
        },
        "createdBySubject": {
          "type": "string",
          "description": "Subject identifier recorded when the schedule was created.",
          "x-presence": "implicit"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time this record was most recently updated.",
          "x-presence": "message"
        },
        "updatedBySubject": {
          "type": "string",
          "description": "Subject identifier recorded when the schedule was last updated.",
          "x-presence": "implicit"
        },
        "pausedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time at which the schedule was paused.",
          "x-presence": "message"
        },
        "pausedBySubject": {
          "type": "string",
          "description": "Subject identifier recorded for the schedule pause.",
          "x-presence": "implicit"
        },
        "pausedReason": {
          "type": "string",
          "description": "Explanation recorded for the schedule pause.",
          "x-presence": "implicit"
        },
        "resumedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time at which the schedule was most recently resumed.",
          "x-presence": "message"
        },
        "resumedBySubject": {
          "type": "string",
          "description": "Subject identifier recorded for the schedule resume.",
          "x-presence": "implicit"
        },
        "deletedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time at which the schedule was deleted.",
          "x-presence": "message"
        },
        "deletedBySubject": {
          "type": "string",
          "description": "Subject identifier recorded for the schedule deletion.",
          "x-presence": "implicit"
        },
        "lastTriggeredAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the schedule was last triggered. Trigger and failure counters advance at most once per scheduled firing on its first attempt; retrying that firing does not inflate them.",
          "x-presence": "message"
        },
        "nextTriggerAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time calculated for the next scheduled trigger.",
          "x-presence": "message"
        },
        "triggerCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Scheduled times that ran, cumulative for the schedule's whole life.",
          "x-presence": "implicit"
        },
        "failureCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Scheduled times whose first attempt failed, cumulative for the schedule's whole life. A firing that fails on attempt 1 and succeeds on retry still counts here — a failure was observed.\n\nThis counter does NOT drive auto-pause. See consecutive\\_failure\\_count.",
          "x-presence": "implicit"
        },
        "consecutiveFailureCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Current run of consecutive failed firings. This is the counter auto\\_pause\\_threshold is compared against.\n\nIncremented when a firing's first attempt fails; reset to 0 as soon as any attempt of any firing succeeds. So a firing that fails on attempt 1 and succeeds on retry has net zero effect here while still advancing failure\\_count — the target recovered, so the run is over.\n\nA non-success terminal outcome counts as a failure, including a firing cancelled on a terminal 4xx.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Schedule",
        "url": "/api/models/schema-1ld0l8rmvg#response"
      }
    },
    "platform_v1_services_scheduler_v1_ScheduleTarget": {
      "type": "object",
      "description": "ScheduleTarget describes the HTTP endpoint that receives each job invocation.",
      "properties": {
        "url": {
          "type": "string",
          "description": "Destination URL. Must be a valid absolute URI.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1",
              "uri": true
            }
          },
          "x-validation-scope": "request"
        },
        "method": {
          "type": "string",
          "description": "HTTP method to use. Defaults to \"POST\".",
          "x-presence": "implicit"
        },
        "kind": {
          "type": "string",
          "description": "Logical kind used for routing and observability (e.g., \"notification\", \"llm\\_conversation\", \"metering\"). Required.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "payload": {
          "type": "object",
          "additionalProperties": true,
          "description": "Arbitrary JSON payload forwarded verbatim to the target.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "ScheduleTarget",
        "url": "/api/models/schema-1lbkptb5rj#response"
      },
      "x-request-required": [
        "url",
        "kind"
      ]
    },
    "platform_v1_services_scheduler_v1_RetryPolicy": {
      "type": "object",
      "description": "RetryPolicy controls how failed executions are retried.",
      "properties": {
        "maxAttempts": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum delivery attempts (including the initial attempt). Default 10.",
          "x-presence": "implicit"
        },
        "initialBackoffMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Initial backoff before the first retry, in milliseconds. Default 5000.",
          "x-presence": "implicit"
        },
        "maxBackoffMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum backoff cap, in milliseconds. Default 1800000 (30 min).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "RetryPolicy",
        "url": "/api/models/schema-1l9ki2op1i#response"
      }
    },
    "platform_v1_services_scheduler_gateway_v1_GetJobRequest": {
      "type": "object",
      "description": "Inputs for retrieving a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.",
      "properties": {
        "scheduleId": {
          "type": "string",
          "description": "Identifier of the scheduled job.",
          "x-presence": "implicit"
        },
        "externalId": {
          "type": "string",
          "description": "Caller-assigned correlation identifier for the scheduled job.",
          "x-presence": "implicit"
        }
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.reference",
            "message": "provide exactly one of schedule_id or external_id",
            "expression": "[size(this.schedule_id) > 0, size(this.external_id) > 0].filter(f, f).size() == 1"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "platform_v1_services_scheduler_gateway_v1_ListJobsRequest": {
      "type": "object",
      "description": "Inputs for listing scheduled jobs and their trigger settings. A zero or omitted page size lets the server choose its default.",
      "properties": {
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageToken": {
          "type": "string",
          "description": "Continuation token from a previous response; leave empty to start the listing.",
          "x-presence": "implicit"
        },
        "stateFilter": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCHEDULE_STATUS_ACTIVE",
                "SCHEDULE_STATUS_PAUSED",
                "SCHEDULE_STATUS_DELETED"
              ],
              "x-enumDescriptions": {
                "SCHEDULE_STATUS_ACTIVE": "The schedule is active and can trigger at its next matching time.",
                "SCHEDULE_STATUS_PAUSED": "The schedule is paused and does not trigger until resumed.",
                "SCHEDULE_STATUS_DELETED": "The schedule has been deleted; this is a schedule condition, not an execution outcome."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SCHEDULE_STATUS_ACTIVE",
              "number": 0,
              "canonical": true,
              "description": "The schedule is active and can trigger at its next matching time."
            },
            {
              "name": "SCHEDULE_STATUS_PAUSED",
              "number": 1,
              "canonical": true,
              "description": "The schedule is paused and does not trigger until resumed."
            },
            {
              "name": "SCHEDULE_STATUS_DELETED",
              "number": 2,
              "canonical": true,
              "description": "The schedule has been deleted; this is a schedule condition, not an execution outcome."
            }
          ],
          "x-enum-description": "Lifecycle condition that determines whether a scheduled job may trigger: active, paused, or deleted. This is separate from the outcome of an individual scheduled-job execution.",
          "description": "Schedule lifecycle status used to restrict the job listing.",
          "x-presence": "explicit"
        },
        "targetKindFilter": {
          "type": "string",
          "description": "Target kind used to restrict the scheduled job listing.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_scheduler_v1_ListJobsResponse": {
      "type": "object",
      "description": "Result of listing scheduled jobs and their trigger settings.",
      "properties": {
        "schedules": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/platform_v1_services_scheduler_v1_Schedule"
          },
          "description": "Scheduled jobs included in this result page.",
          "x-presence": "collection"
        },
        "nextPageToken": {
          "type": "string",
          "description": "Opaque cursor token for the next page. Empty when no further pages exist.",
          "x-presence": "implicit"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of records reported for this listing.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_scheduler_gateway_v1_UpdateJobRequest": {
      "type": "object",
      "description": "Inputs for updating a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.\n\n### cron\\_expression\n\nThe cron\\_expression may be empty text. Otherwise it must have one of two shapes. The first starts with @ followed by one or more ASCII letters, digits, or underscores; it may optionally continue with one separator character and then one or more characters other than line feed. The second has exactly five or six nonempty groups of non-separator characters, separated by one or more separator characters, with no leading or trailing separator. For this constraint, separator characters are ASCII space, horizontal tab, line feed, form feed, and carriage return. The shorthand tail may contain these characters except line feed after its first separator.\n\n### interval\\_seconds\n\nThe interval\\_seconds value must be zero, meaning no change for this update request, or at least 60 seconds.\n\n### auto\\_pause\\_threshold\n\nThe auto\\_pause\\_threshold value must be zero, or between 3 and 100 inclusive.",
      "properties": {
        "scheduleId": {
          "type": "string",
          "description": "Identifier of the scheduled job.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "maxLength": 256,
          "description": "Human-readable name assigned to the scheduled job.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "description": "Human-readable explanation of the scheduled job.",
          "x-presence": "implicit"
        },
        "cronExpression": {
          "type": "string",
          "maxLength": 128,
          "pattern": "^$|^@\\w+(\\s.+)?$|^\\S+(\\s+\\S+){4,5}$",
          "description": "Cron expression defining when the scheduled job runs.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "128",
              "pattern": "^$|^@\\w+(\\s.+)?$|^\\S+(\\s+\\S+){4,5}$"
            }
          },
          "x-validation-scope": "request"
        },
        "timezone": {
          "type": "string",
          "description": "IANA time zone used by the scheduled job.",
          "x-presence": "implicit"
        },
        "scheduledAt": {
          "type": "string",
          "format": "date-time",
          "description": "Instant at which a one-time scheduled job should run.",
          "x-presence": "message"
        },
        "intervalSeconds": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Interval between scheduled triggers, in seconds.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "cel": [
              {
                "id": "native.zero.interval_seconds",
                "message": "interval_seconds must be 0 (no change) or at least 60",
                "expression": "this == 0 || this >= 60"
              }
            ]
          },
          "x-validation-scope": "request"
        },
        "target": {
          "description": "Destination and invocation settings for the scheduled job.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_scheduler_v1_ScheduleTargetInput"
            }
          ]
        },
        "retryPolicy": {
          "description": "Attempt limits and backoff settings for the scheduled target.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_scheduler_v1_RetryPolicyInput"
            }
          ]
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Application-defined JSON metadata attached to the scheduled job.",
          "x-presence": "message"
        },
        "autoPauseThreshold": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Consecutive failure threshold used to pause the scheduled job. Omission or zero leaves the existing threshold unchanged. A nonzero override must be from 3 through 100. This update request does not expose a value that disables auto-pause.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "cel": [
              {
                "id": "native.zero.auto_pause_threshold",
                "message": "auto_pause_threshold must be 0 (leave unchanged) or in [3, 100]",
                "expression": "this == 0 || (this >= 3 && this <= 100)"
              }
            ]
          },
          "x-validation-scope": "request"
        },
        "externalId": {
          "type": "string",
          "description": "Lookup reference only. Exactly one of schedule\\_id / external\\_id must be set.",
          "x-presence": "implicit"
        }
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.reference",
            "message": "provide exactly one of schedule_id or external_id",
            "expression": "[size(this.schedule_id) > 0, size(this.external_id) > 0].filter(f, f).size() == 1"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "platform_v1_services_scheduler_v1_UpdateJobResponse": {
      "type": "object",
      "description": "UpdateJob keeps a dedicated response wrapper (rather than the bare Schedule the other mutations return) because it carries response-only metadata that is not part of the persisted resource.",
      "properties": {
        "schedule": {
          "description": "Scheduled job returned by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_scheduler_v1_Schedule"
            }
          ]
        },
        "effectiveAt": {
          "type": "string",
          "description": "When the update takes effect. Current updates return immediate; next\\_resync and next\\_worker\\_deployment are not emitted. The returned schedule’s next\\_trigger\\_at identifies its next firing.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_scheduler_gateway_v1_PauseJobRequest": {
      "type": "object",
      "description": "Inputs for pausing a scheduled job and its trigger settings.\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or both does not satisfy this condition.",
      "properties": {
        "scheduleId": {
          "type": "string",
          "description": "Identifier of the scheduled job.",
          "x-presence": "implicit"
        },
        "reason": {
          "type": "string",
          "description": "Explanation recorded for pausing the scheduled job.",
          "x-presence": "implicit"
        },
        "externalId": {
          "type": "string",
          "description": "Caller-assigned correlation identifier for the scheduled job.",
          "x-presence": "implicit"
        }
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.reference",
            "message": "provide exactly one of schedule_id or external_id",
            "expression": "[size(this.schedule_id) > 0, size(this.external_id) > 0].filter(f, f).size() == 1"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "platform_v1_services_scheduler_gateway_v1_ResumeJobRequest": {
      "type": "object",
      "description": "Inputs for resuming a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.",
      "properties": {
        "scheduleId": {
          "type": "string",
          "description": "Identifier of the scheduled job.",
          "x-presence": "implicit"
        },
        "externalId": {
          "type": "string",
          "description": "Caller-assigned correlation identifier for the scheduled job.",
          "x-presence": "implicit"
        }
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.reference",
            "message": "provide exactly one of schedule_id or external_id",
            "expression": "[size(this.schedule_id) > 0, size(this.external_id) > 0].filter(f, f).size() == 1"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "platform_v1_services_scheduler_gateway_v1_DeleteJobRequest": {
      "type": "object",
      "description": "Inputs for deleting a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.",
      "properties": {
        "scheduleId": {
          "type": "string",
          "description": "Identifier of the scheduled job.",
          "x-presence": "implicit"
        },
        "externalId": {
          "type": "string",
          "description": "Caller-assigned correlation identifier for the scheduled job.",
          "x-presence": "implicit"
        }
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.reference",
            "message": "provide exactly one of schedule_id or external_id",
            "expression": "[size(this.schedule_id) > 0, size(this.external_id) > 0].filter(f, f).size() == 1"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "platform_v1_services_scheduler_v1_DeleteJobResponse": {
      "type": "object",
      "description": "Result of deleting a scheduled job and its trigger settings.",
      "properties": {
        "scheduleId": {
          "type": "string",
          "description": "Identifier of the scheduled job.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_scheduler_gateway_v1_DeleteJobsForProjectRequest": {
      "type": "object",
      "description": "Tenant/project come from the ingress headers — the request body carries no fields.",
      "properties": {}
    },
    "platform_v1_services_scheduler_v1_DeleteJobsForProjectResponse": {
      "type": "object",
      "description": "Result of deleting scheduled jobs within the selected project.",
      "properties": {
        "deletedCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of scheduled jobs deleted by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_scheduler_gateway_v1_DeleteJobsForOwnerRequest": {
      "type": "object",
      "description": "Tenant/project come from the ingress headers. The owner is the caller itself (derived from x-user-id) — there are no body fields.",
      "properties": {}
    },
    "platform_v1_services_scheduler_v1_DeleteJobsForOwnerResponse": {
      "type": "object",
      "description": "Result of deleting scheduled jobs belonging to the selected owner.",
      "properties": {
        "deletedCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of scheduled jobs deleted by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_scheduler_gateway_v1_ListExecutionsRequest": {
      "type": "object",
      "description": "Inputs for listing the execution history of a scheduled job.",
      "properties": {
        "scheduleId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the scheduled job.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageToken": {
          "type": "string",
          "description": "Continuation token from a previous response; leave empty to start the listing.",
          "x-presence": "implicit"
        },
        "statusFilter": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EXECUTION_STATUS_COMPLETED",
                "EXECUTION_STATUS_FAILED",
                "EXECUTION_STATUS_CANCELLED"
              ],
              "x-enumDescriptions": {
                "EXECUTION_STATUS_COMPLETED": "The scheduled HTTP dispatch received a status below 400; this does not establish completion of downstream asynchronous work.",
                "EXECUTION_STATUS_FAILED": "The firing failed, including exhausted delivery attempts; inspect end\\_reason.",
                "EXECUTION_STATUS_CANCELLED": "The firing was cancelled rather than completed, for example by an operator or a non-HTTP cancellation condition, such as a permanent failure to obtain dispatch credentials before the request is sent."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "EXECUTION_STATUS_COMPLETED",
              "number": 0,
              "canonical": true,
              "description": "The scheduled HTTP dispatch received a status below 400; this does not establish completion of downstream asynchronous work."
            },
            {
              "name": "EXECUTION_STATUS_FAILED",
              "number": 1,
              "canonical": true,
              "description": "The firing failed, including exhausted delivery attempts; inspect end\\_reason."
            },
            {
              "name": "EXECUTION_STATUS_CANCELLED",
              "number": 2,
              "canonical": true,
              "description": "The firing was cancelled rather than completed, for example by an operator or a non-HTTP cancellation condition, such as a permanent failure to obtain dispatch credentials before the request is sent."
            }
          ],
          "x-enum-description": "Terminal result of one scheduled-job firing. Use `end_reason` for additional information about a non-successful result. A firing that exhausts its delivery attempts has status FAILED and `end_reason` \"discarded\".",
          "description": "Execution status used to restrict the execution history.",
          "x-presence": "explicit"
        }
      },
      "x-request-required": [
        "scheduleId"
      ],
      "required": [
        "scheduleId"
      ]
    },
    "platform_v1_services_scheduler_v1_ListExecutionsResponse": {
      "type": "object",
      "description": "Result of listing the execution history of a scheduled job.",
      "properties": {
        "executions": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/platform_v1_services_scheduler_v1_Execution"
          },
          "description": "Scheduled execution records included in this result page.",
          "x-presence": "collection"
        },
        "nextPageToken": {
          "type": "string",
          "description": "Opaque cursor token for the next page. Empty when no further pages exist.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_scheduler_v1_Execution": {
      "type": "object",
      "description": "Execution is a single firing record for a scheduled job.",
      "properties": {
        "executionId": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Identifier of the scheduled job execution record.",
          "x-presence": "implicit"
        },
        "scheduleId": {
          "type": "string",
          "description": "Identifier of the scheduled job.",
          "x-presence": "implicit"
        },
        "tenantId": {
          "type": "string",
          "description": "Identifier of the tenant that owns or scopes this record.",
          "x-presence": "implicit"
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the project within the tenant that scopes this record.",
          "x-presence": "implicit"
        },
        "scheduledTime": {
          "type": "string",
          "format": "date-time",
          "description": "Instant for which this execution or trigger was scheduled.",
          "x-presence": "message"
        },
        "startedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time at which the scheduled execution started.",
          "x-presence": "message"
        },
        "completedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time at which the scheduled execution completed.",
          "x-presence": "message"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EXECUTION_STATUS_COMPLETED",
                "EXECUTION_STATUS_FAILED",
                "EXECUTION_STATUS_CANCELLED"
              ],
              "x-enumDescriptions": {
                "EXECUTION_STATUS_COMPLETED": "The scheduled HTTP dispatch received a status below 400; this does not establish completion of downstream asynchronous work.",
                "EXECUTION_STATUS_FAILED": "The firing failed, including exhausted delivery attempts; inspect end\\_reason.",
                "EXECUTION_STATUS_CANCELLED": "The firing was cancelled rather than completed, for example by an operator or a non-HTTP cancellation condition, such as a permanent failure to obtain dispatch credentials before the request is sent."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "EXECUTION_STATUS_COMPLETED",
              "number": 0,
              "canonical": true,
              "description": "The scheduled HTTP dispatch received a status below 400; this does not establish completion of downstream asynchronous work."
            },
            {
              "name": "EXECUTION_STATUS_FAILED",
              "number": 1,
              "canonical": true,
              "description": "The firing failed, including exhausted delivery attempts; inspect end\\_reason."
            },
            {
              "name": "EXECUTION_STATUS_CANCELLED",
              "number": 2,
              "canonical": true,
              "description": "The firing was cancelled rather than completed, for example by an operator or a non-HTTP cancellation condition, such as a permanent failure to obtain dispatch credentials before the request is sent."
            }
          ],
          "x-enum-description": "Terminal result of one scheduled-job firing. Use `end_reason` for additional information about a non-successful result. A firing that exhausts its delivery attempts has status FAILED and `end_reason` \"discarded\".",
          "description": "Execution outcome recorded for this scheduled attempt.",
          "x-presence": "explicit"
        },
        "httpStatus": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "HTTP status code returned by the target.",
          "x-presence": "implicit"
        },
        "attempt": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Attempt number (1-based) within this firing.",
          "x-presence": "implicit"
        },
        "durationMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "End-to-end duration of the delivery attempt, in milliseconds.",
          "x-presence": "implicit"
        },
        "targetKind": {
          "type": "string",
          "description": "Kind of target invoked by the scheduled execution.",
          "x-presence": "implicit"
        },
        "error": {
          "type": "string",
          "description": "Error message when status is FAILED.",
          "x-presence": "implicit"
        },
        "responseBody": {
          "type": "string",
          "description": "Truncated HTTP response body captured on failed dispatches, with a 4 KiB cap. Empty for successful dispatches by design — only error responses are stored. May also be empty for binary content types or transport-level errors (see response\\_size\\_bytes / error).",
          "x-presence": "implicit"
        },
        "responseHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Allowlisted response headers from the failed dispatch. Allowlist: content-type, content-length, retry-after, x-request-id, date.",
          "x-presence": "collection"
        },
        "responseTruncated": {
          "type": "boolean",
          "description": "True when response\\_body was clipped at the 4 KiB cap.",
          "x-presence": "implicit"
        },
        "responseSizeBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Original response size in bytes (from Content-Length when present, else total bytes read before truncation).",
          "x-presence": "implicit"
        },
        "endReason": {
          "type": "string",
          "description": "Explanation of an execution failure when status alone is insufficient. `discarded` means the job exhausted `maxAttempts` and will not be retried. Empty when there is no additional reason.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Execution",
        "url": "/api/models/schema-1l7vrun3li#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_ListTracesRequest": {
      "type": "object",
      "description": "Inputs for listing evaluation trace records.",
      "properties": {
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "conversationId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the conversation associated with the evaluation record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "profileId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "userId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the end user associated with this operation or record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "sessionId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the evaluation session grouping related traces.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "name": {
          "type": "string",
          "maxLength": 256,
          "description": "Name used to restrict the evaluation record listing.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "environment": {
          "type": "string",
          "maxLength": 256,
          "description": "Environment label used to select evaluation records.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "version": {
          "type": "string",
          "maxLength": 256,
          "description": "Version label used to select evaluation records.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "release": {
          "type": "string",
          "maxLength": 256,
          "description": "Application release label attached to evaluation records.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags used to classify or filter the evaluation record.",
          "x-presence": "collection"
        },
        "fromTime": {
          "type": "string",
          "format": "date-time",
          "description": "Beginning of the time range used to select evaluation records.",
          "x-presence": "message"
        },
        "toTime": {
          "type": "string",
          "format": "date-time",
          "description": "End of the time range used to select evaluation records.",
          "x-presence": "message"
        },
        "level": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "OBSERVATION_LEVEL_DEBUG",
                "OBSERVATION_LEVEL_DEFAULT",
                "OBSERVATION_LEVEL_WARNING",
                "OBSERVATION_LEVEL_ERROR"
              ],
              "x-enumDescriptions": {
                "OBSERVATION_LEVEL_DEBUG": "Detailed diagnostic information intended for debugging.",
                "OBSERVATION_LEVEL_DEFAULT": "Ordinary observation information without an elevated warning or error level.",
                "OBSERVATION_LEVEL_WARNING": "A condition reported at warning severity.",
                "OBSERVATION_LEVEL_ERROR": "A condition reported at error severity."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "OBSERVATION_LEVEL_DEBUG",
              "number": 0,
              "canonical": true,
              "description": "Detailed diagnostic information intended for debugging."
            },
            {
              "name": "OBSERVATION_LEVEL_DEFAULT",
              "number": 1,
              "canonical": true,
              "description": "Ordinary observation information without an elevated warning or error level."
            },
            {
              "name": "OBSERVATION_LEVEL_WARNING",
              "number": 2,
              "canonical": true,
              "description": "A condition reported at warning severity."
            },
            {
              "name": "OBSERVATION_LEVEL_ERROR",
              "number": 3,
              "canonical": true,
              "description": "A condition reported at error severity."
            }
          ],
          "x-enum-description": "Diagnostic severity attached to an evaluation observation.",
          "description": "Severity level used to restrict evaluation observations or traces.",
          "x-presence": "explicit"
        },
        "orderBy": {
          "type": "string",
          "maxLength": 64,
          "description": "Ordering expression passed to the evaluation record query.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "64"
            }
          },
          "x-validation-scope": "request"
        },
        "filters": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_EvalFilter"
          },
          "description": "Structured filters applied to the evaluation record query.",
          "x-presence": "collection"
        },
        "searchQuery": {
          "type": "string",
          "maxLength": 512,
          "description": "Text searched within evaluation trace records.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "512"
            }
          },
          "x-validation-scope": "request"
        },
        "searchType": {
          "type": "string",
          "maxLength": 32,
          "description": "Search mode applied to the evaluation trace query.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "32"
            }
          },
          "x-validation-scope": "request"
        },
        "cursor": {
          "type": "string",
          "maxLength": 4096,
          "description": "Opaque cursor from the previous response’s cursor\\_page.next\\_cursor. Leave empty for the first page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "4096"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "llm_v1_services_eval_v1_EvalFilter": {
      "type": "object",
      "description": "Typed comparison operand and column selector for querying evaluation-provider records.\n\nThe filter type selects which single value field is meaningful.\n\n### Input constraints\n\n### type\n\nSelect a listed comparison type.",
      "properties": {
        "type": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EVAL_FILTER_TYPE_DATETIME",
                "EVAL_FILTER_TYPE_STRING",
                "EVAL_FILTER_TYPE_NUMBER",
                "EVAL_FILTER_TYPE_STRING_OPTIONS",
                "EVAL_FILTER_TYPE_CATEGORY_OPTIONS",
                "EVAL_FILTER_TYPE_ARRAY_OPTIONS",
                "EVAL_FILTER_TYPE_BOOLEAN",
                "EVAL_FILTER_TYPE_NULL",
                "EVAL_FILTER_TYPE_STRING_OBJECT",
                "EVAL_FILTER_TYPE_NUMBER_OBJECT",
                "EVAL_FILTER_TYPE_BOOLEAN_OBJECT"
              ],
              "x-enumDescriptions": {
                "EVAL_FILTER_TYPE_DATETIME": "Compare a date-time value using ordered comparisons.\n\n\\> \\< >= \\<=",
                "EVAL_FILTER_TYPE_STRING": "Compare text using equality or supported substring and prefix or suffix operators.\n\n\\= contains does not contain starts with ends with",
                "EVAL_FILTER_TYPE_NUMBER": "Compare a numeric value using equality or ordered comparisons.\n\n\\= > \\< >= \\<=",
                "EVAL_FILTER_TYPE_STRING_OPTIONS": "Match a string against a set of allowed or excluded choices.\n\nany of none of",
                "EVAL_FILTER_TYPE_CATEGORY_OPTIONS": "Match a category against a set of allowed or excluded choices.\n\nany of none of",
                "EVAL_FILTER_TYPE_ARRAY_OPTIONS": "Match array contents using any-of, none-of or all-of selection.\n\nany of none of all of",
                "EVAL_FILTER_TYPE_BOOLEAN": "Compare a boolean value for equality or inequality.\n\n\\= \\<>",
                "EVAL_FILTER_TYPE_NULL": "Test whether the selected property is null or non-null.\n\nis null is not null",
                "EVAL_FILTER_TYPE_STRING_OBJECT": "Compare a string-valued member identified by a key, such as a metadata property. STRING\\_OBJECT supports metadata filtering; NUMBER\\_OBJECT and BOOLEAN\\_OBJECT support score filtering keyed by score name.",
                "EVAL_FILTER_TYPE_NUMBER_OBJECT": "Compare a numeric member identified by a key, such as a named score.",
                "EVAL_FILTER_TYPE_BOOLEAN_OBJECT": "Compare a boolean member identified by a key."
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "EVAL_FILTER_TYPE_DATETIME",
              "number": 0,
              "canonical": true,
              "description": "Compare a date-time value using ordered comparisons.\n\n\\> \\< >= \\<="
            },
            {
              "name": "EVAL_FILTER_TYPE_STRING",
              "number": 1,
              "canonical": true,
              "description": "Compare text using equality or supported substring and prefix or suffix operators.\n\n\\= contains does not contain starts with ends with"
            },
            {
              "name": "EVAL_FILTER_TYPE_NUMBER",
              "number": 2,
              "canonical": true,
              "description": "Compare a numeric value using equality or ordered comparisons.\n\n\\= > \\< >= \\<="
            },
            {
              "name": "EVAL_FILTER_TYPE_STRING_OPTIONS",
              "number": 3,
              "canonical": true,
              "description": "Match a string against a set of allowed or excluded choices.\n\nany of none of"
            },
            {
              "name": "EVAL_FILTER_TYPE_CATEGORY_OPTIONS",
              "number": 4,
              "canonical": true,
              "description": "Match a category against a set of allowed or excluded choices.\n\nany of none of"
            },
            {
              "name": "EVAL_FILTER_TYPE_ARRAY_OPTIONS",
              "number": 5,
              "canonical": true,
              "description": "Match array contents using any-of, none-of or all-of selection.\n\nany of none of all of"
            },
            {
              "name": "EVAL_FILTER_TYPE_BOOLEAN",
              "number": 6,
              "canonical": true,
              "description": "Compare a boolean value for equality or inequality.\n\n\\= \\<>"
            },
            {
              "name": "EVAL_FILTER_TYPE_NULL",
              "number": 7,
              "canonical": true,
              "description": "Test whether the selected property is null or non-null.\n\nis null is not null"
            },
            {
              "name": "EVAL_FILTER_TYPE_STRING_OBJECT",
              "number": 8,
              "canonical": true,
              "description": "Compare a string-valued member identified by a key, such as a metadata property. STRING\\_OBJECT supports metadata filtering; NUMBER\\_OBJECT and BOOLEAN\\_OBJECT support score filtering keyed by score name."
            },
            {
              "name": "EVAL_FILTER_TYPE_NUMBER_OBJECT",
              "number": 9,
              "canonical": true,
              "description": "Compare a numeric member identified by a key, such as a named score."
            },
            {
              "name": "EVAL_FILTER_TYPE_BOOLEAN_OBJECT",
              "number": 10,
              "canonical": true,
              "description": "Compare a boolean member identified by a key."
            }
          ],
          "x-enum-description": "Operand shape and comparison vocabulary for an evaluation-record filter. Types and operators follow the provider's v3.224.1 filter vocabulary, including keyed object variants.",
          "description": "Discriminator selecting the evaluation filter’s operand type.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "column": {
          "type": "string",
          "minLength": 1,
          "description": "Evaluation filter column identifier, for example traceName, scores\\_avg, metadata or level.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "operator": {
          "type": "string",
          "minLength": 1,
          "description": "Operator accepted for the selected filter type, for example contains, any of or >=.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "key": {
          "type": "string",
          "description": "Set only for the \\*\\_OBJECT types: the metadata key or score name.",
          "x-presence": "implicit"
        },
        "stringValue": {
          "type": "string",
          "description": "Text operand used by a text-valued evaluation filter.",
          "x-presence": "implicit"
        },
        "numberValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Numeric operand used by the evaluation filter.",
          "x-presence": "implicit"
        },
        "booleanValue": {
          "type": "boolean",
          "description": "Boolean operand used by the selected evaluation filter type.",
          "x-presence": "implicit"
        },
        "stringValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Text values used by the \\*\\_OPTIONS comparison types.",
          "x-presence": "collection"
        },
        "timeValue": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp operand used by the evaluation filter.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "EvalFilter",
        "url": "/api/models/schema-ovg7lvels1#request"
      },
      "x-request-required": [
        "type",
        "column",
        "operator"
      ],
      "required": [
        "type",
        "column",
        "operator"
      ]
    },
    "platform_v1_services_eval_gateway_v1_ListTracesResponse": {
      "type": "object",
      "description": "Result of listing evaluation trace records.",
      "properties": {
        "traces": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_TraceSummary"
          },
          "description": "Evaluation trace summaries included in this result page.",
          "x-presence": "collection"
        },
        "contentRedacted": {
          "type": "boolean",
          "description": "Whether returned trace content is redacted. Redaction occurs before the trace is recorded, so its text is not a faithful copy of the conversation store.",
          "x-presence": "implicit"
        },
        "cursorPage": {
          "description": "Cursor pagination details accompanying this result page.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_CursorPageInfo"
            }
          ]
        }
      }
    },
    "llm_v1_services_eval_v1_TraceSummary": {
      "type": "object",
      "description": "Evaluation summary for a conversation turn, including its recorded conversation, message and profile attribution.",
      "properties": {
        "traceId": {
          "type": "string",
          "description": "Identifier of the evaluation trace.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Name recorded for the evaluation trace.",
          "x-presence": "implicit"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp associated with the evaluation trace.",
          "x-presence": "message"
        },
        "inputJson": {
          "type": "string",
          "description": "Evaluation input serialized as JSON.",
          "x-presence": "implicit"
        },
        "outputJson": {
          "type": "string",
          "description": "Evaluation output serialized as JSON.",
          "x-presence": "implicit"
        },
        "latencySeconds": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Elapsed observation latency, in seconds.",
          "x-presence": "implicit"
        },
        "totalCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Total cost reported for the evaluated generation or aggregate.",
          "x-presence": "implicit"
        },
        "environment": {
          "type": "string",
          "description": "Environment label attached to the evaluation record.",
          "x-presence": "implicit"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the resource for organization or filtering.",
          "x-presence": "collection"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional attributes serialized as a JSON object.",
          "x-presence": "implicit"
        },
        "bookmarked": {
          "type": "boolean",
          "description": "Whether the evaluation object is bookmarked.",
          "x-presence": "implicit"
        },
        "version": {
          "type": "string",
          "description": "Version of the resource represented by this message.",
          "x-presence": "implicit"
        },
        "release": {
          "type": "string",
          "description": "Application release identifier attached to the trace.",
          "x-presence": "implicit"
        },
        "userId": {
          "type": "string",
          "description": "Identifier of the user associated with the operation.",
          "x-presence": "implicit"
        },
        "sessionId": {
          "type": "string",
          "description": "Identifier of the evaluation session grouping related traces.",
          "x-presence": "implicit"
        },
        "observationCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of observations reported for the evaluation object.",
          "x-presence": "implicit"
        },
        "conversationId": {
          "type": "string",
          "description": "Identifier of the conversation associated with the trace.",
          "x-presence": "implicit"
        },
        "sourceUserMessageId": {
          "type": "string",
          "description": "Identifier of the user message that opened the evaluated generation turn.",
          "x-presence": "implicit"
        },
        "profileId": {
          "type": "string",
          "description": "Identifier of the agent profile associated with the generation.",
          "x-presence": "implicit"
        },
        "configHash": {
          "type": "string",
          "description": "Fingerprint of the profile ID, model and resolved prompt hash used to group evaluation results. Other settings are excluded; this is not an immutable profile revision.",
          "x-presence": "implicit"
        },
        "inputTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Input-token usage reported for the evaluated generation.",
          "x-presence": "implicit"
        },
        "outputTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Output-token usage reported for the evaluated generation.",
          "x-presence": "implicit"
        },
        "totalTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total token usage reported for the evaluated generation or aggregate.",
          "x-presence": "implicit"
        },
        "errorCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of observations reported at error level.",
          "x-presence": "implicit"
        },
        "warningCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of observations reported at warning level.",
          "x-presence": "implicit"
        },
        "defaultCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of observations reported at the default level.",
          "x-presence": "implicit"
        },
        "debugCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of observations reported at debug level.",
          "x-presence": "implicit"
        },
        "scores": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_Score"
          },
          "description": "Evaluation scores returned for the selected objects or query.",
          "x-presence": "collection"
        },
        "commentCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of comments reported on the evaluation object.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TraceSummary",
        "url": "/api/models/schema-1k4mjul65u#response"
      }
    },
    "llm_v1_services_eval_v1_Score": {
      "type": "object",
      "description": "Evaluation score with its value, source, target identity, and generation attribution.",
      "properties": {
        "scoreId": {
          "type": "string",
          "description": "Identifier of the evaluation score.",
          "x-presence": "implicit"
        },
        "targetType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EVAL_TARGET_TYPE_TRACE",
                "EVAL_TARGET_TYPE_OBSERVATION",
                "EVAL_TARGET_TYPE_DATASET_RUN",
                "EVAL_TARGET_TYPE_SESSION"
              ],
              "x-enumDescriptions": {
                "EVAL_TARGET_TYPE_TRACE": "A complete trace identified by its trace identifier.",
                "EVAL_TARGET_TYPE_OBSERVATION": "A specific observation within a trace.",
                "EVAL_TARGET_TYPE_DATASET_RUN": "An evaluation run over a dataset.",
                "EVAL_TARGET_TYPE_SESSION": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "EVAL_TARGET_TYPE_TRACE",
              "number": 0,
              "canonical": true,
              "description": "A complete trace identified by its trace identifier."
            },
            {
              "name": "EVAL_TARGET_TYPE_OBSERVATION",
              "number": 1,
              "canonical": true,
              "description": "A specific observation within a trace."
            },
            {
              "name": "EVAL_TARGET_TYPE_DATASET_RUN",
              "number": 2,
              "canonical": true,
              "description": "An evaluation run over a dataset."
            },
            {
              "name": "EVAL_TARGET_TYPE_SESSION",
              "number": 3,
              "canonical": true,
              "description": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
            }
          ],
          "x-enum-description": "Kind of evaluation object a score or evaluation configuration addresses.",
          "description": "Kind of evaluation object to which the score applies.",
          "x-presence": "explicit"
        },
        "targetId": {
          "type": "string",
          "description": "Identifier of the evaluation object to which the score applies.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Metric name identifying the recorded evaluation score.",
          "x-presence": "implicit"
        },
        "dataType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCORE_DATA_TYPE_NUMERIC",
                "SCORE_DATA_TYPE_CATEGORICAL",
                "SCORE_DATA_TYPE_BOOLEAN",
                "SCORE_DATA_TYPE_TEXT"
              ],
              "x-enumDescriptions": {
                "SCORE_DATA_TYPE_NUMERIC": "A numeric measurement or rating.",
                "SCORE_DATA_TYPE_CATEGORICAL": "A value chosen from a named set of categories.",
                "SCORE_DATA_TYPE_BOOLEAN": "A true-or-false evaluation result.",
                "SCORE_DATA_TYPE_TEXT": "Free-form text supplied by an evaluator or reviewer. The provider supports text values on score definitions and scores; support through this API depends on the operation."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SCORE_DATA_TYPE_NUMERIC",
              "number": 0,
              "canonical": true,
              "description": "A numeric measurement or rating."
            },
            {
              "name": "SCORE_DATA_TYPE_CATEGORICAL",
              "number": 1,
              "canonical": true,
              "description": "A value chosen from a named set of categories."
            },
            {
              "name": "SCORE_DATA_TYPE_BOOLEAN",
              "number": 2,
              "canonical": true,
              "description": "A true-or-false evaluation result."
            },
            {
              "name": "SCORE_DATA_TYPE_TEXT",
              "number": 3,
              "canonical": true,
              "description": "Free-form text supplied by an evaluator or reviewer. The provider supports text values on score definitions and scores; support through this API depends on the operation."
            }
          ],
          "x-enum-description": "Scores\n\nData representation of an evaluation score or score configuration.",
          "description": "Value type used to interpret numeric, categorical, Boolean, or text score values.",
          "x-presence": "explicit"
        },
        "numericValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Numeric score value reported by the evaluator.",
          "x-presence": "implicit"
        },
        "stringValue": {
          "type": "string",
          "description": "Category label recorded for a categorical evaluation score.",
          "x-presence": "implicit"
        },
        "booleanValue": {
          "type": "boolean",
          "description": "Boolean value recorded for a Boolean evaluation score.",
          "x-presence": "implicit"
        },
        "source": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCORE_SOURCE_JUDGE",
                "SCORE_SOURCE_HUMAN",
                "SCORE_SOURCE_USER",
                "SCORE_SOURCE_HARNESS",
                "SCORE_SOURCE_EVAL"
              ],
              "x-enumDescriptions": {
                "SCORE_SOURCE_JUDGE": "A score produced by an automated judge.",
                "SCORE_SOURCE_HUMAN": "A score entered by a human reviewer through the annotation path.",
                "SCORE_SOURCE_USER": "Feedback supplied by an end user.",
                "SCORE_SOURCE_HARNESS": "A score written by an evaluation harness or another API-based producer.",
                "SCORE_SOURCE_EVAL": "A read-only score produced by the evaluation provider's managed evaluators; it cannot be written through the public score API."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SCORE_SOURCE_JUDGE",
              "number": 0,
              "canonical": true,
              "description": "A score produced by an automated judge."
            },
            {
              "name": "SCORE_SOURCE_HUMAN",
              "number": 1,
              "canonical": true,
              "description": "A score entered by a human reviewer through the annotation path."
            },
            {
              "name": "SCORE_SOURCE_USER",
              "number": 2,
              "canonical": true,
              "description": "Feedback supplied by an end user."
            },
            {
              "name": "SCORE_SOURCE_HARNESS",
              "number": 3,
              "canonical": true,
              "description": "A score written by an evaluation harness or another API-based producer."
            },
            {
              "name": "SCORE_SOURCE_EVAL",
              "number": 4,
              "canonical": true,
              "description": "A read-only score produced by the evaluation provider's managed evaluators; it cannot be written through the public score API."
            }
          ],
          "x-enum-description": "Platform classification of who produced an evaluation score. The provider source label retains its original vocabulary: writes accept API or ANNOTATION, while EVAL is reserved for the provider's internal evaluators and is rejected through its public API.\n\nSCORE\\_SOURCE\\_HUMAN maps to ANNOTATION. SCORE\\_SOURCE\\_USER, SCORE\\_SOURCE\\_JUDGE and SCORE\\_SOURCE\\_HARNESS map to API.\n\nReviewer and end-user scores also use separate name namespaces: reviewer scores do not use names beginning with user-feedback-.",
          "description": "Source classification reported for the evaluation score.",
          "x-presence": "explicit"
        },
        "comment": {
          "type": "string",
          "description": "Explanatory text attached to the evaluation score.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "textValue": {
          "type": "string",
          "description": "Text value of the evaluation score.",
          "x-presence": "implicit"
        },
        "authorUserId": {
          "type": "string",
          "description": "Identifier recorded for the user who authored the score. A stored author identifier alone does not attest to verified human provenance.",
          "x-presence": "implicit"
        },
        "configId": {
          "type": "string",
          "description": "Identifier of the score configuration defining the score’s value domain.",
          "x-presence": "implicit"
        },
        "queueId": {
          "type": "string",
          "description": "Identifier of the annotation queue.",
          "x-presence": "implicit"
        },
        "traceId": {
          "type": "string",
          "description": "Identifier of the evaluation trace.",
          "x-presence": "implicit"
        },
        "observationId": {
          "type": "string",
          "description": "Identifier of the evaluation observation.",
          "x-presence": "implicit"
        },
        "sessionId": {
          "type": "string",
          "description": "Identifier of the evaluation session grouping related traces.",
          "x-presence": "implicit"
        },
        "datasetRunId": {
          "type": "string",
          "description": "Identifier of the dataset run associated with the score.",
          "x-presence": "implicit"
        },
        "environment": {
          "type": "string",
          "description": "Environment label attached to the evaluation record.",
          "x-presence": "implicit"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional attributes serialized as a JSON object.",
          "x-presence": "implicit"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp associated with the evaluation score.",
          "x-presence": "message"
        },
        "traceName": {
          "type": "string",
          "description": "Trace name included with the score for display in score listings.",
          "x-presence": "implicit"
        },
        "userId": {
          "type": "string",
          "description": "User identifier recorded with the evaluation score.",
          "x-presence": "implicit"
        },
        "sourceLabel": {
          "type": "string",
          "description": "Original evaluation-provider source label, such as API, ANNOTATION or EVAL. Interpret it alongside source and authorship: API alone does not distinguish an end-user rating from a harness, and a source label does not independently prove verified human provenance.",
          "x-presence": "implicit"
        },
        "conversationId": {
          "type": "string",
          "description": "Conversation identifier recorded in the score’s own metadata. Scores authored directly in the evaluation store can lack platform attribution; an empty link is not repaired by retrying.",
          "x-presence": "implicit"
        },
        "messageId": {
          "type": "string",
          "description": "Identifier of the conversation message associated with the evaluation record.",
          "x-presence": "implicit"
        },
        "messageSequence": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Sequence number of the evaluated message within its conversation.",
          "x-presence": "implicit"
        },
        "profileId": {
          "type": "string",
          "description": "Identifier of the agent profile associated with the generation.",
          "x-presence": "implicit"
        },
        "configHash": {
          "type": "string",
          "description": "Fingerprint of the profile ID, model and resolved prompt hash used to group evaluation results. Other settings are excluded; this is not an immutable profile revision.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Score",
        "url": "/api/models/schema-1jm5lo00e7#response"
      }
    },
    "llm_v1_services_eval_v1_CursorPageInfo": {
      "type": "object",
      "description": "Opaque-cursor pagination details. A cursor is used to request the next page; arbitrary page-number seeking is not supported.",
      "properties": {
        "nextCursor": {
          "type": "string",
          "description": "Pass back as the request's `cursor` for the next page. Empty on the last page.",
          "x-presence": "implicit"
        },
        "limit": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of entries requested from the listing.",
          "x-presence": "implicit"
        },
        "totalItems": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of matching items when it can be counted exactly. Absent when the selected filters do not support an exact total.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "CursorPageInfo",
        "url": "/api/models/schema-oi1c4l4i8b#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_GetTraceRequest": {
      "type": "object",
      "description": "Inputs for retrieving an evaluation trace with its recorded generation details. Supply exactly one address: trace\\_id, or both conversation\\_id and source\\_user\\_message\\_id.",
      "properties": {
        "traceId": {
          "type": "string",
          "description": "Identifier of the evaluation trace.",
          "x-presence": "implicit"
        },
        "conversationId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the conversation associated with the evaluation record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "sourceUserMessageId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the user message that started the evaluated turn, not the assistant reply's message identifier. Supply it together with conversation\\_id when addressing by turn.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.trace_reference",
            "message": "exactly one of trace_id or (conversation_id + source_user_message_id) must be set",
            "expression": "[size(this.trace_id) > 0, size(this.conversation_id) > 0 && size(this.source_user_message_id) > 0].filter(f, f).size() == 1"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "platform_v1_services_eval_gateway_v1_GetTraceResponse": {
      "type": "object",
      "description": "Result of retrieving an evaluation trace with its recorded generation details.",
      "properties": {
        "trace": {
          "description": "Evaluation trace details returned by the lookup.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_TraceDetail"
            }
          ]
        },
        "contentRedacted": {
          "type": "boolean",
          "description": "Whether returned trace content is redacted. Redaction occurs before the trace is recorded, so its text is not a faithful copy of the conversation store.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_eval_v1_TraceDetail": {
      "type": "object",
      "description": "Evaluation trace summary together with its observations and attached scores.",
      "properties": {
        "summary": {
          "description": "Summary information for the evaluation trace.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_TraceSummary"
            }
          ]
        },
        "observations": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_Observation"
          },
          "description": "Observations associated with the evaluation trace.",
          "x-presence": "collection"
        },
        "scores": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_Score"
          },
          "description": "Evaluation scores returned for the selected objects or query.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "TraceDetail",
        "url": "/api/models/schema-pha7gtif3l#response"
      }
    },
    "llm_v1_services_eval_v1_Observation": {
      "type": "object",
      "description": "Timed evaluation span or generation record with model usage, inputs, outputs, and scores. A generation observation originates the profile and configuration attribution promoted to its trace; callers can read those links directly on either record.",
      "properties": {
        "observationId": {
          "type": "string",
          "description": "Identifier of the evaluation observation.",
          "x-presence": "implicit"
        },
        "traceId": {
          "type": "string",
          "description": "Identifier of the evaluation trace.",
          "x-presence": "implicit"
        },
        "parentObservationId": {
          "type": "string",
          "description": "Identifier of the parent observation within the trace.",
          "x-presence": "implicit"
        },
        "type": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "OBSERVATION_TYPE_SPAN",
                "OBSERVATION_TYPE_GENERATION",
                "OBSERVATION_TYPE_EVENT",
                "OBSERVATION_TYPE_TOOL",
                "OBSERVATION_TYPE_RETRIEVER",
                "OBSERVATION_TYPE_AGENT",
                "OBSERVATION_TYPE_CHAIN",
                "OBSERVATION_TYPE_EMBEDDING",
                "OBSERVATION_TYPE_EVALUATOR",
                "OBSERVATION_TYPE_GUARDRAIL"
              ],
              "x-enumDescriptions": {
                "OBSERVATION_TYPE_SPAN": "A timed unit of work represented as a span.",
                "OBSERVATION_TYPE_GENERATION": "A model-generation operation and its recorded inputs, outputs and usage.",
                "OBSERVATION_TYPE_EVENT": "A point-in-time event rather than a timed operation.",
                "OBSERVATION_TYPE_TOOL": "Execution of a tool call.",
                "OBSERVATION_TYPE_RETRIEVER": "Retrieval of supporting documents or other context.",
                "OBSERVATION_TYPE_AGENT": "An agent-level operation reported in the trace.",
                "OBSERVATION_TYPE_CHAIN": "A sequence or chain of related processing steps.",
                "OBSERVATION_TYPE_EMBEDDING": "Computation of vector embeddings.",
                "OBSERVATION_TYPE_EVALUATOR": "An evaluator operation that assesses another result.",
                "OBSERVATION_TYPE_GUARDRAIL": "A guardrail check on inputs, outputs or processing."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "OBSERVATION_TYPE_SPAN",
              "number": 0,
              "canonical": true,
              "description": "A timed unit of work represented as a span."
            },
            {
              "name": "OBSERVATION_TYPE_GENERATION",
              "number": 1,
              "canonical": true,
              "description": "A model-generation operation and its recorded inputs, outputs and usage."
            },
            {
              "name": "OBSERVATION_TYPE_EVENT",
              "number": 2,
              "canonical": true,
              "description": "A point-in-time event rather than a timed operation."
            },
            {
              "name": "OBSERVATION_TYPE_TOOL",
              "number": 3,
              "canonical": true,
              "description": "Execution of a tool call."
            },
            {
              "name": "OBSERVATION_TYPE_RETRIEVER",
              "number": 4,
              "canonical": true,
              "description": "Retrieval of supporting documents or other context."
            },
            {
              "name": "OBSERVATION_TYPE_AGENT",
              "number": 5,
              "canonical": true,
              "description": "An agent-level operation reported in the trace."
            },
            {
              "name": "OBSERVATION_TYPE_CHAIN",
              "number": 6,
              "canonical": true,
              "description": "A sequence or chain of related processing steps."
            },
            {
              "name": "OBSERVATION_TYPE_EMBEDDING",
              "number": 7,
              "canonical": true,
              "description": "Computation of vector embeddings."
            },
            {
              "name": "OBSERVATION_TYPE_EVALUATOR",
              "number": 8,
              "canonical": true,
              "description": "An evaluator operation that assesses another result."
            },
            {
              "name": "OBSERVATION_TYPE_GUARDRAIL",
              "number": 9,
              "canonical": true,
              "description": "A guardrail check on inputs, outputs or processing."
            }
          ],
          "x-enum-description": "Semantic category of a trace observation, including categories accepted from upstream even when the platform does not emit them. Current emitters produce GENERATION, TOOL, RETRIEVER and SPAN; the other declared categories can still describe upstream observations.",
          "description": "Observation kind reported by the evaluation provider.",
          "x-presence": "explicit"
        },
        "name": {
          "type": "string",
          "description": "Operation name recorded for the evaluation observation.",
          "x-presence": "implicit"
        },
        "level": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "OBSERVATION_LEVEL_DEBUG",
                "OBSERVATION_LEVEL_DEFAULT",
                "OBSERVATION_LEVEL_WARNING",
                "OBSERVATION_LEVEL_ERROR"
              ],
              "x-enumDescriptions": {
                "OBSERVATION_LEVEL_DEBUG": "Detailed diagnostic information intended for debugging.",
                "OBSERVATION_LEVEL_DEFAULT": "Ordinary observation information without an elevated warning or error level.",
                "OBSERVATION_LEVEL_WARNING": "A condition reported at warning severity.",
                "OBSERVATION_LEVEL_ERROR": "A condition reported at error severity."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "OBSERVATION_LEVEL_DEBUG",
              "number": 0,
              "canonical": true,
              "description": "Detailed diagnostic information intended for debugging."
            },
            {
              "name": "OBSERVATION_LEVEL_DEFAULT",
              "number": 1,
              "canonical": true,
              "description": "Ordinary observation information without an elevated warning or error level."
            },
            {
              "name": "OBSERVATION_LEVEL_WARNING",
              "number": 2,
              "canonical": true,
              "description": "A condition reported at warning severity."
            },
            {
              "name": "OBSERVATION_LEVEL_ERROR",
              "number": 3,
              "canonical": true,
              "description": "A condition reported at error severity."
            }
          ],
          "x-enum-description": "Diagnostic severity attached to an evaluation observation.",
          "description": "Observation log level reported by the evaluation provider.",
          "x-presence": "explicit"
        },
        "statusMessage": {
          "type": "string",
          "description": "Diagnostic text explaining the reported state.",
          "x-presence": "implicit"
        },
        "startTime": {
          "type": "string",
          "format": "date-time",
          "description": "Beginning of the time interval represented by this operation.",
          "x-presence": "message"
        },
        "endTime": {
          "type": "string",
          "format": "date-time",
          "description": "End of the time interval represented by this operation.",
          "x-presence": "message"
        },
        "completionStartTime": {
          "type": "string",
          "format": "date-time",
          "description": "Time to first token, generations only.",
          "x-presence": "message"
        },
        "latencySeconds": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Elapsed observation latency, in seconds.",
          "x-presence": "implicit"
        },
        "inputJson": {
          "type": "string",
          "description": "Evaluation input serialized as JSON.",
          "x-presence": "implicit"
        },
        "outputJson": {
          "type": "string",
          "description": "Evaluation output serialized as JSON.",
          "x-presence": "implicit"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional attributes serialized as a JSON object.",
          "x-presence": "implicit"
        },
        "model": {
          "type": "string",
          "description": "Model identifier recorded for the evaluated generation.",
          "x-presence": "implicit"
        },
        "modelParametersJson": {
          "type": "string",
          "description": "Model parameters recorded as a serialized JSON object.",
          "x-presence": "implicit"
        },
        "inputTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Input-token usage reported for the evaluated generation.",
          "x-presence": "implicit"
        },
        "outputTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Output-token usage reported for the evaluated generation.",
          "x-presence": "implicit"
        },
        "totalTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total token usage reported for the evaluated generation or aggregate.",
          "x-presence": "implicit"
        },
        "inputCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Cost attributed to model input by the evaluation provider.",
          "x-presence": "implicit"
        },
        "outputCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Cost attributed to model output by the evaluation provider.",
          "x-presence": "implicit"
        },
        "totalCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Total cost reported for the evaluated generation or aggregate.",
          "x-presence": "implicit"
        },
        "environment": {
          "type": "string",
          "description": "Environment label attached to the evaluation record.",
          "x-presence": "implicit"
        },
        "version": {
          "type": "string",
          "description": "Version of the resource represented by this message.",
          "x-presence": "implicit"
        },
        "promptName": {
          "type": "string",
          "description": "Name of the versioned prompt associated with the generation.",
          "x-presence": "implicit"
        },
        "promptVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Version of the prompt associated with the generation.",
          "x-presence": "implicit"
        },
        "scores": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_Score"
          },
          "description": "Evaluation scores returned for the selected objects or query.",
          "x-presence": "collection"
        },
        "commentCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of comments reported on the evaluation object.",
          "x-presence": "implicit"
        },
        "conversationId": {
          "type": "string",
          "description": "Identifier of the conversation associated with this evaluation observation, when recorded.",
          "x-presence": "implicit"
        },
        "sourceUserMessageId": {
          "type": "string",
          "description": "Identifier of the user message that opened the evaluated generation turn.",
          "x-presence": "implicit"
        },
        "profileId": {
          "type": "string",
          "description": "Identifier of the agent profile associated with the generation.",
          "x-presence": "implicit"
        },
        "configHash": {
          "type": "string",
          "description": "Fingerprint of the profile ID, model and resolved prompt hash used to group evaluation results. Other settings are excluded; this is not an immutable profile revision.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Observation",
        "url": "/api/models/schema-1ju9tclufp#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_ListObservationsRequest": {
      "type": "object",
      "description": "Inputs for listing observations recorded within evaluation traces.",
      "properties": {
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "traceId": {
          "type": "string",
          "description": "Identifier of the evaluation trace.",
          "x-presence": "implicit"
        },
        "type": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "OBSERVATION_TYPE_SPAN",
                "OBSERVATION_TYPE_GENERATION",
                "OBSERVATION_TYPE_EVENT",
                "OBSERVATION_TYPE_TOOL",
                "OBSERVATION_TYPE_RETRIEVER",
                "OBSERVATION_TYPE_AGENT",
                "OBSERVATION_TYPE_CHAIN",
                "OBSERVATION_TYPE_EMBEDDING",
                "OBSERVATION_TYPE_EVALUATOR",
                "OBSERVATION_TYPE_GUARDRAIL"
              ],
              "x-enumDescriptions": {
                "OBSERVATION_TYPE_SPAN": "A timed unit of work represented as a span.",
                "OBSERVATION_TYPE_GENERATION": "A model-generation operation and its recorded inputs, outputs and usage.",
                "OBSERVATION_TYPE_EVENT": "A point-in-time event rather than a timed operation.",
                "OBSERVATION_TYPE_TOOL": "Execution of a tool call.",
                "OBSERVATION_TYPE_RETRIEVER": "Retrieval of supporting documents or other context.",
                "OBSERVATION_TYPE_AGENT": "An agent-level operation reported in the trace.",
                "OBSERVATION_TYPE_CHAIN": "A sequence or chain of related processing steps.",
                "OBSERVATION_TYPE_EMBEDDING": "Computation of vector embeddings.",
                "OBSERVATION_TYPE_EVALUATOR": "An evaluator operation that assesses another result.",
                "OBSERVATION_TYPE_GUARDRAIL": "A guardrail check on inputs, outputs or processing."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "OBSERVATION_TYPE_SPAN",
              "number": 0,
              "canonical": true,
              "description": "A timed unit of work represented as a span."
            },
            {
              "name": "OBSERVATION_TYPE_GENERATION",
              "number": 1,
              "canonical": true,
              "description": "A model-generation operation and its recorded inputs, outputs and usage."
            },
            {
              "name": "OBSERVATION_TYPE_EVENT",
              "number": 2,
              "canonical": true,
              "description": "A point-in-time event rather than a timed operation."
            },
            {
              "name": "OBSERVATION_TYPE_TOOL",
              "number": 3,
              "canonical": true,
              "description": "Execution of a tool call."
            },
            {
              "name": "OBSERVATION_TYPE_RETRIEVER",
              "number": 4,
              "canonical": true,
              "description": "Retrieval of supporting documents or other context."
            },
            {
              "name": "OBSERVATION_TYPE_AGENT",
              "number": 5,
              "canonical": true,
              "description": "An agent-level operation reported in the trace."
            },
            {
              "name": "OBSERVATION_TYPE_CHAIN",
              "number": 6,
              "canonical": true,
              "description": "A sequence or chain of related processing steps."
            },
            {
              "name": "OBSERVATION_TYPE_EMBEDDING",
              "number": 7,
              "canonical": true,
              "description": "Computation of vector embeddings."
            },
            {
              "name": "OBSERVATION_TYPE_EVALUATOR",
              "number": 8,
              "canonical": true,
              "description": "An evaluator operation that assesses another result."
            },
            {
              "name": "OBSERVATION_TYPE_GUARDRAIL",
              "number": 9,
              "canonical": true,
              "description": "A guardrail check on inputs, outputs or processing."
            }
          ],
          "x-enum-description": "Semantic category of a trace observation, including categories accepted from upstream even when the platform does not emit them. Current emitters produce GENERATION, TOOL, RETRIEVER and SPAN; the other declared categories can still describe upstream observations.",
          "description": "Observation type used to restrict the evaluation query.",
          "x-presence": "explicit"
        },
        "level": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "OBSERVATION_LEVEL_DEBUG",
                "OBSERVATION_LEVEL_DEFAULT",
                "OBSERVATION_LEVEL_WARNING",
                "OBSERVATION_LEVEL_ERROR"
              ],
              "x-enumDescriptions": {
                "OBSERVATION_LEVEL_DEBUG": "Detailed diagnostic information intended for debugging.",
                "OBSERVATION_LEVEL_DEFAULT": "Ordinary observation information without an elevated warning or error level.",
                "OBSERVATION_LEVEL_WARNING": "A condition reported at warning severity.",
                "OBSERVATION_LEVEL_ERROR": "A condition reported at error severity."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "OBSERVATION_LEVEL_DEBUG",
              "number": 0,
              "canonical": true,
              "description": "Detailed diagnostic information intended for debugging."
            },
            {
              "name": "OBSERVATION_LEVEL_DEFAULT",
              "number": 1,
              "canonical": true,
              "description": "Ordinary observation information without an elevated warning or error level."
            },
            {
              "name": "OBSERVATION_LEVEL_WARNING",
              "number": 2,
              "canonical": true,
              "description": "A condition reported at warning severity."
            },
            {
              "name": "OBSERVATION_LEVEL_ERROR",
              "number": 3,
              "canonical": true,
              "description": "A condition reported at error severity."
            }
          ],
          "x-enum-description": "Diagnostic severity attached to an evaluation observation.",
          "description": "Severity level used to restrict evaluation observations or traces.",
          "x-presence": "explicit"
        },
        "parentObservationId": {
          "type": "string",
          "description": "Identifier of the parent observation used to select child observations.",
          "x-presence": "implicit"
        },
        "userId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the end user associated with this operation or record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "name": {
          "type": "string",
          "maxLength": 256,
          "description": "Name used to restrict the evaluation record listing.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "environment": {
          "type": "string",
          "maxLength": 256,
          "description": "Environment label used to select evaluation records.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "fromTime": {
          "type": "string",
          "format": "date-time",
          "description": "Beginning of the time range used to select evaluation records.",
          "x-presence": "message"
        },
        "toTime": {
          "type": "string",
          "format": "date-time",
          "description": "End of the time range used to select evaluation records.",
          "x-presence": "message"
        },
        "filters": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_EvalFilter"
          },
          "description": "Structured filters applied to the evaluation record query.",
          "x-presence": "collection"
        },
        "cursor": {
          "type": "string",
          "maxLength": 4096,
          "description": "Opaque cursor from the previous response’s cursor\\_page.next\\_cursor. Leave empty for the first page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "4096"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListObservationsResponse": {
      "type": "object",
      "description": "Result of listing observations recorded within evaluation traces.",
      "properties": {
        "observations": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_Observation"
          },
          "description": "Evaluation observations included in this result page.",
          "x-presence": "collection"
        },
        "contentRedacted": {
          "type": "boolean",
          "description": "Whether sensitive evaluation content has been removed from the returned view.",
          "x-presence": "implicit"
        },
        "cursorPage": {
          "description": "Cursor pagination details accompanying this result page.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_CursorPageInfo"
            }
          ]
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListSessionsRequest": {
      "type": "object",
      "description": "Inputs for listing evaluation sessions grouping related traces.",
      "properties": {
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "fromTime": {
          "type": "string",
          "format": "date-time",
          "description": "Beginning of the time range used to select evaluation records.",
          "x-presence": "message"
        },
        "toTime": {
          "type": "string",
          "format": "date-time",
          "description": "End of the time range used to select evaluation records.",
          "x-presence": "message"
        },
        "environment": {
          "type": "string",
          "maxLength": 256,
          "description": "Environment label used to select evaluation records.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "userId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the end user associated with this operation or record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "filters": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_EvalFilter"
          },
          "description": "Structured filters applied to the evaluation record query.",
          "x-presence": "collection"
        },
        "cursor": {
          "type": "string",
          "maxLength": 4096,
          "description": "Opaque cursor from the previous response’s cursor\\_page.next\\_cursor. Leave empty for the first page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "4096"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListSessionsResponse": {
      "type": "object",
      "description": "Result of listing evaluation sessions grouping related traces.",
      "properties": {
        "sessions": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_SessionSummary"
          },
          "description": "Evaluation session summaries included in this result page.",
          "x-presence": "collection"
        },
        "cursorPage": {
          "description": "Cursor pagination details accompanying this result page.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_CursorPageInfo"
            }
          ]
        }
      }
    },
    "llm_v1_services_eval_v1_SessionSummary": {
      "type": "object",
      "description": "Aggregated trace, usage, and score information for an evaluation session.",
      "properties": {
        "sessionId": {
          "type": "string",
          "description": "Identifier of the evaluation session grouping related traces.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "durationSeconds": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Elapsed session duration, in seconds.",
          "x-presence": "implicit"
        },
        "environment": {
          "type": "string",
          "description": "Environment label attached to the evaluation record.",
          "x-presence": "implicit"
        },
        "userIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User identifiers recorded for this evaluation session.",
          "x-presence": "collection"
        },
        "traceCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of traces represented by this session summary.",
          "x-presence": "implicit"
        },
        "totalCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Total cost reported for the evaluated generation or aggregate.",
          "x-presence": "implicit"
        },
        "inputTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Input-token usage reported for the evaluated generation.",
          "x-presence": "implicit"
        },
        "outputTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Output-token usage reported for the evaluated generation.",
          "x-presence": "implicit"
        },
        "totalTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total token usage reported for the evaluated generation or aggregate.",
          "x-presence": "implicit"
        },
        "traceTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels collected from the session’s evaluation traces.",
          "x-presence": "collection"
        },
        "scores": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_Score"
          },
          "description": "Evaluation scores returned for the selected objects or query.",
          "x-presence": "collection"
        },
        "commentCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of comments reported on the evaluation object.",
          "x-presence": "implicit"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional attributes serialized as a JSON object.",
          "x-presence": "implicit"
        },
        "bookmarked": {
          "type": "boolean",
          "description": "Whether the evaluation object is bookmarked.",
          "x-presence": "implicit"
        },
        "conversationIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Conversation identifiers observed on the session’s traces; a session may span multiple conversations.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "SessionSummary",
        "url": "/api/models/schema-pbibjr8tih#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_GetSessionRequest": {
      "type": "object",
      "description": "Inputs for retrieving an evaluation session and its associated traces.",
      "properties": {
        "sessionId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation session grouping related traces.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "sessionId"
      ],
      "required": [
        "sessionId"
      ]
    },
    "platform_v1_services_eval_gateway_v1_GetSessionResponse": {
      "type": "object",
      "description": "Result of retrieving an evaluation session and its associated traces.",
      "properties": {
        "session": {
          "description": "Evaluation session details returned by the lookup.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_SessionDetail"
            }
          ]
        },
        "contentRedacted": {
          "type": "boolean",
          "description": "Whether sensitive evaluation content has been removed from the returned view.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_eval_v1_SessionDetail": {
      "type": "object",
      "description": "Evaluation session summary together with the traces belonging to the session.",
      "properties": {
        "summary": {
          "description": "Summary information for the evaluation session.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_SessionSummary"
            }
          ]
        },
        "traces": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_TraceSummary"
          },
          "description": "Evaluation traces returned by the query.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "SessionDetail",
        "url": "/api/models/schema-ph83s78vr5#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_ListScoresRequest": {
      "type": "object",
      "description": "Inputs for listing scores attached to evaluation objects.",
      "properties": {
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "targetType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EVAL_TARGET_TYPE_TRACE",
                "EVAL_TARGET_TYPE_OBSERVATION",
                "EVAL_TARGET_TYPE_DATASET_RUN",
                "EVAL_TARGET_TYPE_SESSION"
              ],
              "x-enumDescriptions": {
                "EVAL_TARGET_TYPE_TRACE": "A complete trace identified by its trace identifier.",
                "EVAL_TARGET_TYPE_OBSERVATION": "A specific observation within a trace.",
                "EVAL_TARGET_TYPE_DATASET_RUN": "An evaluation run over a dataset.",
                "EVAL_TARGET_TYPE_SESSION": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "EVAL_TARGET_TYPE_TRACE",
              "number": 0,
              "canonical": true,
              "description": "A complete trace identified by its trace identifier."
            },
            {
              "name": "EVAL_TARGET_TYPE_OBSERVATION",
              "number": 1,
              "canonical": true,
              "description": "A specific observation within a trace."
            },
            {
              "name": "EVAL_TARGET_TYPE_DATASET_RUN",
              "number": 2,
              "canonical": true,
              "description": "An evaluation run over a dataset."
            },
            {
              "name": "EVAL_TARGET_TYPE_SESSION",
              "number": 3,
              "canonical": true,
              "description": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
            }
          ],
          "x-enum-description": "Kind of evaluation object a score or evaluation configuration addresses.",
          "description": "Kind of evaluation object targeted by the score or annotation.",
          "x-presence": "explicit"
        },
        "targetId": {
          "type": "string",
          "description": "Identifier of the evaluation object targeted by the score or annotation.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "maxLength": 256,
          "description": "Name used to restrict the evaluation record listing.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "source": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCORE_SOURCE_JUDGE",
                "SCORE_SOURCE_HUMAN",
                "SCORE_SOURCE_USER",
                "SCORE_SOURCE_HARNESS",
                "SCORE_SOURCE_EVAL"
              ],
              "x-enumDescriptions": {
                "SCORE_SOURCE_JUDGE": "A score produced by an automated judge.",
                "SCORE_SOURCE_HUMAN": "A score entered by a human reviewer through the annotation path.",
                "SCORE_SOURCE_USER": "Feedback supplied by an end user.",
                "SCORE_SOURCE_HARNESS": "A score written by an evaluation harness or another API-based producer.",
                "SCORE_SOURCE_EVAL": "A read-only score produced by the evaluation provider's managed evaluators; it cannot be written through the public score API."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SCORE_SOURCE_JUDGE",
              "number": 0,
              "canonical": true,
              "description": "A score produced by an automated judge."
            },
            {
              "name": "SCORE_SOURCE_HUMAN",
              "number": 1,
              "canonical": true,
              "description": "A score entered by a human reviewer through the annotation path."
            },
            {
              "name": "SCORE_SOURCE_USER",
              "number": 2,
              "canonical": true,
              "description": "Feedback supplied by an end user."
            },
            {
              "name": "SCORE_SOURCE_HARNESS",
              "number": 3,
              "canonical": true,
              "description": "A score written by an evaluation harness or another API-based producer."
            },
            {
              "name": "SCORE_SOURCE_EVAL",
              "number": 4,
              "canonical": true,
              "description": "A read-only score produced by the evaluation provider's managed evaluators; it cannot be written through the public score API."
            }
          ],
          "x-enum-description": "Platform classification of who produced an evaluation score. The provider source label retains its original vocabulary: writes accept API or ANNOTATION, while EVAL is reserved for the provider's internal evaluators and is rejected through its public API.\n\nSCORE\\_SOURCE\\_HUMAN maps to ANNOTATION. SCORE\\_SOURCE\\_USER, SCORE\\_SOURCE\\_JUDGE and SCORE\\_SOURCE\\_HARNESS map to API.\n\nReviewer and end-user scores also use separate name namespaces: reviewer scores do not use names beginning with user-feedback-.",
          "description": "Origin of the evaluation scores selected by this query.",
          "x-presence": "explicit"
        },
        "fromTime": {
          "type": "string",
          "format": "date-time",
          "description": "Beginning of the time range used to select evaluation records.",
          "x-presence": "message"
        },
        "toTime": {
          "type": "string",
          "format": "date-time",
          "description": "End of the time range used to select evaluation records.",
          "x-presence": "message"
        },
        "userId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the end user associated with this operation or record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "profileId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "minValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Lower numeric bound for the score range.",
          "x-presence": "implicit"
        },
        "maxValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Upper numeric bound for the score range.",
          "x-presence": "implicit"
        },
        "conversationId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the conversation associated with the evaluation record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "sessionId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the evaluation session grouping related traces.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "dataType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCORE_DATA_TYPE_NUMERIC",
                "SCORE_DATA_TYPE_CATEGORICAL",
                "SCORE_DATA_TYPE_BOOLEAN",
                "SCORE_DATA_TYPE_TEXT"
              ],
              "x-enumDescriptions": {
                "SCORE_DATA_TYPE_NUMERIC": "A numeric measurement or rating.",
                "SCORE_DATA_TYPE_CATEGORICAL": "A value chosen from a named set of categories.",
                "SCORE_DATA_TYPE_BOOLEAN": "A true-or-false evaluation result.",
                "SCORE_DATA_TYPE_TEXT": "Free-form text supplied by an evaluator or reviewer. The provider supports text values on score definitions and scores; support through this API depends on the operation."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SCORE_DATA_TYPE_NUMERIC",
              "number": 0,
              "canonical": true,
              "description": "A numeric measurement or rating."
            },
            {
              "name": "SCORE_DATA_TYPE_CATEGORICAL",
              "number": 1,
              "canonical": true,
              "description": "A value chosen from a named set of categories."
            },
            {
              "name": "SCORE_DATA_TYPE_BOOLEAN",
              "number": 2,
              "canonical": true,
              "description": "A true-or-false evaluation result."
            },
            {
              "name": "SCORE_DATA_TYPE_TEXT",
              "number": 3,
              "canonical": true,
              "description": "Free-form text supplied by an evaluator or reviewer. The provider supports text values on score definitions and scores; support through this API depends on the operation."
            }
          ],
          "x-enum-description": "Scores\n\nData representation of an evaluation score or score configuration.",
          "description": "Value type used to interpret the evaluation score.",
          "x-presence": "explicit"
        },
        "traceId": {
          "type": "string",
          "description": "Identifier of the evaluation trace.",
          "x-presence": "implicit"
        },
        "filters": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_EvalFilter"
          },
          "description": "Structured filters applied to the evaluation record query.",
          "x-presence": "collection"
        },
        "cursor": {
          "type": "string",
          "maxLength": 4096,
          "description": "Opaque cursor from the previous response’s cursor\\_page.next\\_cursor. Leave empty for the first page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "4096"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListScoresResponse": {
      "type": "object",
      "description": "Result of listing scores attached to evaluation objects.",
      "properties": {
        "scores": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_Score"
          },
          "description": "Evaluation scores included in this result page.",
          "x-presence": "collection"
        },
        "filterNarrowed": {
          "type": "boolean",
          "description": "Whether additional filtering removed rows from this page. A narrowed page can contain fewer than page\\_size results while cursor\\_page.next\\_cursor still identifies another page.",
          "x-presence": "implicit"
        },
        "cursorPage": {
          "description": "Cursor pagination details accompanying this result page.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_CursorPageInfo"
            }
          ]
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_RecordScoreRequest": {
      "type": "object",
      "description": "Inputs for recording an evaluation score. Supply exactly one target address: target\\_id, message\\_id, or both conversation\\_id and source\\_user\\_message\\_id. Authorship comes from the authenticated caller; the score source is assigned for this reviewer operation rather than selected by the request.",
      "properties": {
        "targetType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EVAL_TARGET_TYPE_TRACE",
                "EVAL_TARGET_TYPE_OBSERVATION",
                "EVAL_TARGET_TYPE_DATASET_RUN",
                "EVAL_TARGET_TYPE_SESSION"
              ],
              "x-enumDescriptions": {
                "EVAL_TARGET_TYPE_TRACE": "A complete trace identified by its trace identifier.",
                "EVAL_TARGET_TYPE_OBSERVATION": "A specific observation within a trace.",
                "EVAL_TARGET_TYPE_DATASET_RUN": "An evaluation run over a dataset.",
                "EVAL_TARGET_TYPE_SESSION": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1,
                2,
                3
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "EVAL_TARGET_TYPE_TRACE",
              "number": 0,
              "canonical": true,
              "description": "A complete trace identified by its trace identifier."
            },
            {
              "name": "EVAL_TARGET_TYPE_OBSERVATION",
              "number": 1,
              "canonical": true,
              "description": "A specific observation within a trace."
            },
            {
              "name": "EVAL_TARGET_TYPE_DATASET_RUN",
              "number": 2,
              "canonical": true,
              "description": "An evaluation run over a dataset."
            },
            {
              "name": "EVAL_TARGET_TYPE_SESSION",
              "number": 3,
              "canonical": true,
              "description": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
            }
          ],
          "x-enum-description": "Kind of evaluation object a score or evaluation configuration addresses.",
          "description": "Kind of evaluation object to which the score applies.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "targetId": {
          "type": "string",
          "description": "Not required — a caller may address by message or by turn instead.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Name identifying the scoring dimension recorded for the evaluation target.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "dataType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCORE_DATA_TYPE_NUMERIC",
                "SCORE_DATA_TYPE_CATEGORICAL",
                "SCORE_DATA_TYPE_BOOLEAN",
                "SCORE_DATA_TYPE_TEXT"
              ],
              "x-enumDescriptions": {
                "SCORE_DATA_TYPE_NUMERIC": "A numeric measurement or rating.",
                "SCORE_DATA_TYPE_CATEGORICAL": "A value chosen from a named set of categories.",
                "SCORE_DATA_TYPE_BOOLEAN": "A true-or-false evaluation result.",
                "SCORE_DATA_TYPE_TEXT": "Free-form text supplied by an evaluator or reviewer. The provider supports text values on score definitions and scores; support through this API depends on the operation."
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1,
                2,
                3
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "SCORE_DATA_TYPE_NUMERIC",
              "number": 0,
              "canonical": true,
              "description": "A numeric measurement or rating."
            },
            {
              "name": "SCORE_DATA_TYPE_CATEGORICAL",
              "number": 1,
              "canonical": true,
              "description": "A value chosen from a named set of categories."
            },
            {
              "name": "SCORE_DATA_TYPE_BOOLEAN",
              "number": 2,
              "canonical": true,
              "description": "A true-or-false evaluation result."
            },
            {
              "name": "SCORE_DATA_TYPE_TEXT",
              "number": 3,
              "canonical": true,
              "description": "Free-form text supplied by an evaluator or reviewer. The provider supports text values on score definitions and scores; support through this API depends on the operation."
            }
          ],
          "x-enum-description": "Scores\n\nData representation of an evaluation score or score configuration.",
          "description": "Value type used to interpret the evaluation score.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "numericValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Numeric score value for a numeric score configuration.",
          "x-presence": "implicit"
        },
        "stringValue": {
          "type": "string",
          "description": "Category value for a categorical evaluation score.",
          "x-presence": "implicit"
        },
        "booleanValue": {
          "type": "boolean",
          "description": "Boolean value for a boolean evaluation score.",
          "x-presence": "implicit"
        },
        "textValue": {
          "type": "string",
          "description": "Free-text value for a text evaluation score.",
          "x-presence": "implicit"
        },
        "comment": {
          "type": "string",
          "description": "Explanatory note accompanying the evaluation score.",
          "x-presence": "implicit"
        },
        "configId": {
          "type": "string",
          "description": "Score configuration selected from ListScoreConfigs. Required for this reviewer operation; a missing configuration is rejected.",
          "x-presence": "implicit"
        },
        "profileId": {
          "type": "string",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "x-presence": "implicit"
        },
        "messageId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the conversation message to score. Supply this instead of target\\_id or a conversation\\_id and source\\_user\\_message\\_id pair.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "conversationId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the conversation associated with the evaluation record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "sourceUserMessageId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the user message that originated the evaluated generation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.score_target",
            "message": "exactly one of target_id, message_id, or (conversation_id + source_user_message_id) must be set",
            "expression": "[size(this.target_id) > 0, size(this.message_id) > 0, size(this.conversation_id) > 0 && size(this.source_user_message_id) > 0].filter(f, f).size() == 1"
          }
        ]
      },
      "x-validation-scope": "request",
      "x-request-required": [
        "targetType",
        "name",
        "dataType"
      ],
      "required": [
        "targetType",
        "name",
        "dataType"
      ]
    },
    "platform_v1_services_eval_gateway_v1_RecordScoreResponse": {
      "type": "object",
      "description": "Result of recording a score attached to an evaluation object.",
      "properties": {
        "scoreId": {
          "type": "string",
          "description": "Identifier of the recorded evaluation score.",
          "x-presence": "implicit"
        },
        "targetId": {
          "type": "string",
          "description": "Resolved evaluation-object identifier, returned so a caller that addressed a message can use the object identity in later requests.",
          "x-presence": "implicit"
        },
        "targetType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EVAL_TARGET_TYPE_TRACE",
                "EVAL_TARGET_TYPE_OBSERVATION",
                "EVAL_TARGET_TYPE_DATASET_RUN",
                "EVAL_TARGET_TYPE_SESSION"
              ],
              "x-enumDescriptions": {
                "EVAL_TARGET_TYPE_TRACE": "A complete trace identified by its trace identifier.",
                "EVAL_TARGET_TYPE_OBSERVATION": "A specific observation within a trace.",
                "EVAL_TARGET_TYPE_DATASET_RUN": "An evaluation run over a dataset.",
                "EVAL_TARGET_TYPE_SESSION": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "EVAL_TARGET_TYPE_TRACE",
              "number": 0,
              "canonical": true,
              "description": "A complete trace identified by its trace identifier."
            },
            {
              "name": "EVAL_TARGET_TYPE_OBSERVATION",
              "number": 1,
              "canonical": true,
              "description": "A specific observation within a trace."
            },
            {
              "name": "EVAL_TARGET_TYPE_DATASET_RUN",
              "number": 2,
              "canonical": true,
              "description": "An evaluation run over a dataset."
            },
            {
              "name": "EVAL_TARGET_TYPE_SESSION",
              "number": 3,
              "canonical": true,
              "description": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
            }
          ],
          "x-enum-description": "Kind of evaluation object a score or evaluation configuration addresses.",
          "description": "Kind of evaluation object targeted by the score.",
          "x-presence": "explicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_DeleteScoreRequest": {
      "type": "object",
      "description": "Inputs for deleting a score attached to an evaluation object.",
      "properties": {
        "scoreId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the recorded evaluation score.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "scoreId"
      ],
      "required": [
        "scoreId"
      ]
    },
    "platform_v1_services_eval_gateway_v1_DeleteScoreResponse": {
      "type": "object",
      "description": "Result of deleting a score attached to an evaluation object.",
      "properties": {
        "deleted": {
          "type": "boolean",
          "description": "Whether the deletion operation reported that it deleted the selected resource.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListScoreConfigsRequest": {
      "type": "object",
      "description": "Inputs for listing definitions and allowed values of evaluation scores.",
      "properties": {
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number requested from the backing service.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "includeArchived": {
          "type": "boolean",
          "description": "Whether archived score configurations are included in the listing. They are excluded when this field is omitted or false.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListScoreConfigsResponse": {
      "type": "object",
      "description": "Result of listing definitions and allowed values of evaluation scores.",
      "properties": {
        "configs": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_ScoreConfig"
          },
          "description": "Evaluation score configurations included in this result page.",
          "x-presence": "collection"
        },
        "page": {
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_PageInfo"
            }
          ]
        }
      }
    },
    "llm_v1_services_eval_v1_ScoreConfig": {
      "type": "object",
      "description": "Score definition specifying its value type, bounds, and allowed categories.",
      "properties": {
        "configId": {
          "type": "string",
          "description": "Identifier of the score configuration defining the score’s value domain.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Name identifying the score definition.",
          "x-presence": "implicit"
        },
        "dataType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCORE_DATA_TYPE_NUMERIC",
                "SCORE_DATA_TYPE_CATEGORICAL",
                "SCORE_DATA_TYPE_BOOLEAN",
                "SCORE_DATA_TYPE_TEXT"
              ],
              "x-enumDescriptions": {
                "SCORE_DATA_TYPE_NUMERIC": "A numeric measurement or rating.",
                "SCORE_DATA_TYPE_CATEGORICAL": "A value chosen from a named set of categories.",
                "SCORE_DATA_TYPE_BOOLEAN": "A true-or-false evaluation result.",
                "SCORE_DATA_TYPE_TEXT": "Free-form text supplied by an evaluator or reviewer. The provider supports text values on score definitions and scores; support through this API depends on the operation."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SCORE_DATA_TYPE_NUMERIC",
              "number": 0,
              "canonical": true,
              "description": "A numeric measurement or rating."
            },
            {
              "name": "SCORE_DATA_TYPE_CATEGORICAL",
              "number": 1,
              "canonical": true,
              "description": "A value chosen from a named set of categories."
            },
            {
              "name": "SCORE_DATA_TYPE_BOOLEAN",
              "number": 2,
              "canonical": true,
              "description": "A true-or-false evaluation result."
            },
            {
              "name": "SCORE_DATA_TYPE_TEXT",
              "number": 3,
              "canonical": true,
              "description": "Free-form text supplied by an evaluator or reviewer. The provider supports text values on score definitions and scores; support through this API depends on the operation."
            }
          ],
          "x-enum-description": "Scores\n\nData representation of an evaluation score or score configuration.",
          "description": "Value type used to interpret numeric, categorical, Boolean, or text score values.",
          "x-presence": "explicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit"
        },
        "minValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Minimum numeric score value allowed by the score configuration.",
          "x-presence": "implicit"
        },
        "maxValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Maximum numeric score value allowed by the score configuration.",
          "x-presence": "implicit"
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_ScoreConfigCategory"
          },
          "description": "Named score categories defined by the score configuration.",
          "x-presence": "collection"
        },
        "isArchived": {
          "type": "boolean",
          "description": "Whether the score configuration is archived. Archived configurations are retained so historical scores remain interpretable.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "ScoreConfig",
        "url": "/api/models/schema-1k2h0fdd77#response"
      }
    },
    "llm_v1_services_eval_v1_ScoreConfigCategory": {
      "type": "object",
      "description": "Named category and associated numeric value in a categorical score definition.",
      "properties": {
        "label": {
          "type": "string",
          "description": "Label identifying this score category.",
          "x-presence": "implicit"
        },
        "value": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Numeric score value associated with this named category.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ScoreConfigCategory",
        "url": "/api/models/schema-1k0g6fhhqd#response"
      }
    },
    "llm_v1_services_eval_v1_PageInfo": {
      "type": "object",
      "description": "One-based offset-pagination position, page size and result totals.",
      "properties": {
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "One-based page number.",
          "x-presence": "implicit"
        },
        "limit": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of entries requested from the listing.",
          "x-presence": "implicit"
        },
        "totalItems": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total item count reported for the current query.",
          "x-presence": "implicit"
        },
        "totalPages": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of pages reported for the current query.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "EvaluationPageInfo",
        "url": "/api/models/schema-oi3nhojaso#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_CreateScoreConfigRequest": {
      "type": "object",
      "description": "Inputs for creating the definition and allowed values of an evaluation score.",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Name assigned to the evaluation score configuration.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "dataType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCORE_DATA_TYPE_NUMERIC",
                "SCORE_DATA_TYPE_CATEGORICAL",
                "SCORE_DATA_TYPE_BOOLEAN",
                "SCORE_DATA_TYPE_TEXT"
              ],
              "x-enumDescriptions": {
                "SCORE_DATA_TYPE_NUMERIC": "A numeric measurement or rating.",
                "SCORE_DATA_TYPE_CATEGORICAL": "A value chosen from a named set of categories.",
                "SCORE_DATA_TYPE_BOOLEAN": "A true-or-false evaluation result.",
                "SCORE_DATA_TYPE_TEXT": "Free-form text supplied by an evaluator or reviewer. The provider supports text values on score definitions and scores; support through this API depends on the operation."
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1,
                2,
                3
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "SCORE_DATA_TYPE_NUMERIC",
              "number": 0,
              "canonical": true,
              "description": "A numeric measurement or rating."
            },
            {
              "name": "SCORE_DATA_TYPE_CATEGORICAL",
              "number": 1,
              "canonical": true,
              "description": "A value chosen from a named set of categories."
            },
            {
              "name": "SCORE_DATA_TYPE_BOOLEAN",
              "number": 2,
              "canonical": true,
              "description": "A true-or-false evaluation result."
            },
            {
              "name": "SCORE_DATA_TYPE_TEXT",
              "number": 3,
              "canonical": true,
              "description": "Free-form text supplied by an evaluator or reviewer. The provider supports text values on score definitions and scores; support through this API depends on the operation."
            }
          ],
          "x-enum-description": "Scores\n\nData representation of an evaluation score or score configuration.",
          "description": "Value type used to interpret the evaluation score.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "categoricalValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allowed category values for the score configuration.",
          "x-presence": "collection"
        },
        "minValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Lower numeric bound for the score range.",
          "x-presence": "implicit"
        },
        "maxValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Upper numeric bound for the score range.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "name",
        "dataType"
      ],
      "required": [
        "name",
        "dataType"
      ]
    },
    "platform_v1_services_eval_gateway_v1_CreateScoreConfigResponse": {
      "type": "object",
      "description": "Result of creating the definition and allowed values of an evaluation score.",
      "properties": {
        "configId": {
          "type": "string",
          "description": "Identifier of the evaluation score configuration.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_UpdateScoreConfigRequest": {
      "type": "object",
      "description": "Partial update of a score configuration. Unset fields retain their values; is\\_archived changes archival state. The score data type and categories cannot be changed through this request.",
      "properties": {
        "configId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation score configuration.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Replacement name for the score configuration.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "description": "Human-readable explanation of the evaluation record.",
          "x-presence": "explicit"
        },
        "minValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Lower numeric bound for the score range.",
          "x-presence": "explicit"
        },
        "maxValue": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Upper numeric bound for the score range.",
          "x-presence": "explicit"
        },
        "isArchived": {
          "type": "boolean",
          "description": "Whether the score configuration is marked as archived.",
          "x-presence": "explicit"
        }
      },
      "x-request-required": [
        "configId"
      ],
      "required": [
        "configId"
      ]
    },
    "platform_v1_services_eval_gateway_v1_UpdateScoreConfigResponse": {
      "type": "object",
      "description": "Result of updating the definition and allowed values of an evaluation score.",
      "properties": {
        "config": {
          "description": "Score configuration returned after the update.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_ScoreConfig"
            }
          ]
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_CreateCommentRequest": {
      "type": "object",
      "description": "Inputs for creating a comment attached to an evaluation object.",
      "properties": {
        "objectType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "COMMENT_OBJECT_TYPE_TRACE",
                "COMMENT_OBJECT_TYPE_OBSERVATION",
                "COMMENT_OBJECT_TYPE_SESSION",
                "COMMENT_OBJECT_TYPE_PROMPT"
              ],
              "x-enumDescriptions": {
                "COMMENT_OBJECT_TYPE_TRACE": "Attach the comment to a trace.",
                "COMMENT_OBJECT_TYPE_OBSERVATION": "Attach the comment to a particular observation.",
                "COMMENT_OBJECT_TYPE_SESSION": "Attach the comment to a session.",
                "COMMENT_OBJECT_TYPE_PROMPT": "Attach the comment to a specific prompt version using that version's UUID, not the prompt name. A comment on one version does not appear on later versions."
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1,
                2,
                3
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "COMMENT_OBJECT_TYPE_TRACE",
              "number": 0,
              "canonical": true,
              "description": "Attach the comment to a trace."
            },
            {
              "name": "COMMENT_OBJECT_TYPE_OBSERVATION",
              "number": 1,
              "canonical": true,
              "description": "Attach the comment to a particular observation."
            },
            {
              "name": "COMMENT_OBJECT_TYPE_SESSION",
              "number": 2,
              "canonical": true,
              "description": "Attach the comment to a session."
            },
            {
              "name": "COMMENT_OBJECT_TYPE_PROMPT",
              "number": 3,
              "canonical": true,
              "description": "Attach the comment to a specific prompt version using that version's UUID, not the prompt name. A comment on one version does not appear on later versions."
            }
          ],
          "x-enum-description": "Kind of evaluation object to which a reviewer comment is attached.",
          "description": "Kind of evaluation object to which the comment belongs.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "objectId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation object to which the comment belongs.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "content": {
          "type": "string",
          "minLength": 1,
          "maxLength": 3000,
          "description": "Body of the evaluation comment.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1",
              "maxLen": "3000"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "objectType",
        "objectId",
        "content"
      ],
      "required": [
        "objectType",
        "objectId",
        "content"
      ]
    },
    "platform_v1_services_eval_gateway_v1_CreateCommentResponse": {
      "type": "object",
      "description": "Result of creating a comment attached to an evaluation object.",
      "properties": {
        "commentId": {
          "type": "string",
          "description": "Identifier of the evaluation comment.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListCommentsRequest": {
      "type": "object",
      "description": "Inputs for listing comments attached to evaluation objects.",
      "properties": {
        "objectType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "COMMENT_OBJECT_TYPE_TRACE",
                "COMMENT_OBJECT_TYPE_OBSERVATION",
                "COMMENT_OBJECT_TYPE_SESSION",
                "COMMENT_OBJECT_TYPE_PROMPT"
              ],
              "x-enumDescriptions": {
                "COMMENT_OBJECT_TYPE_TRACE": "Attach the comment to a trace.",
                "COMMENT_OBJECT_TYPE_OBSERVATION": "Attach the comment to a particular observation.",
                "COMMENT_OBJECT_TYPE_SESSION": "Attach the comment to a session.",
                "COMMENT_OBJECT_TYPE_PROMPT": "Attach the comment to a specific prompt version using that version's UUID, not the prompt name. A comment on one version does not appear on later versions."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "COMMENT_OBJECT_TYPE_TRACE",
              "number": 0,
              "canonical": true,
              "description": "Attach the comment to a trace."
            },
            {
              "name": "COMMENT_OBJECT_TYPE_OBSERVATION",
              "number": 1,
              "canonical": true,
              "description": "Attach the comment to a particular observation."
            },
            {
              "name": "COMMENT_OBJECT_TYPE_SESSION",
              "number": 2,
              "canonical": true,
              "description": "Attach the comment to a session."
            },
            {
              "name": "COMMENT_OBJECT_TYPE_PROMPT",
              "number": 3,
              "canonical": true,
              "description": "Attach the comment to a specific prompt version using that version's UUID, not the prompt name. A comment on one version does not appear on later versions."
            }
          ],
          "x-enum-description": "Kind of evaluation object to which a reviewer comment is attached.",
          "description": "Kind of evaluation object to which the comment belongs.",
          "x-presence": "explicit"
        },
        "objectId": {
          "type": "string",
          "description": "Identifier of the evaluation object to which the comment belongs.",
          "x-presence": "implicit"
        },
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number requested from the backing service.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListCommentsResponse": {
      "type": "object",
      "description": "Result of listing comments attached to evaluation objects.",
      "properties": {
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_Comment"
          },
          "description": "Evaluation comments included in this result page.",
          "x-presence": "collection"
        },
        "page": {
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_PageInfo"
            }
          ]
        }
      }
    },
    "llm_v1_services_eval_v1_Comment": {
      "type": "object",
      "description": "Authored text attached to a trace, observation, or other evaluation object.",
      "properties": {
        "commentId": {
          "type": "string",
          "description": "Identifier of the evaluation comment.",
          "x-presence": "implicit"
        },
        "objectType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "COMMENT_OBJECT_TYPE_TRACE",
                "COMMENT_OBJECT_TYPE_OBSERVATION",
                "COMMENT_OBJECT_TYPE_SESSION",
                "COMMENT_OBJECT_TYPE_PROMPT"
              ],
              "x-enumDescriptions": {
                "COMMENT_OBJECT_TYPE_TRACE": "Attach the comment to a trace.",
                "COMMENT_OBJECT_TYPE_OBSERVATION": "Attach the comment to a particular observation.",
                "COMMENT_OBJECT_TYPE_SESSION": "Attach the comment to a session.",
                "COMMENT_OBJECT_TYPE_PROMPT": "Attach the comment to a specific prompt version using that version's UUID, not the prompt name. A comment on one version does not appear on later versions."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "COMMENT_OBJECT_TYPE_TRACE",
              "number": 0,
              "canonical": true,
              "description": "Attach the comment to a trace."
            },
            {
              "name": "COMMENT_OBJECT_TYPE_OBSERVATION",
              "number": 1,
              "canonical": true,
              "description": "Attach the comment to a particular observation."
            },
            {
              "name": "COMMENT_OBJECT_TYPE_SESSION",
              "number": 2,
              "canonical": true,
              "description": "Attach the comment to a session."
            },
            {
              "name": "COMMENT_OBJECT_TYPE_PROMPT",
              "number": 3,
              "canonical": true,
              "description": "Attach the comment to a specific prompt version using that version's UUID, not the prompt name. A comment on one version does not appear on later versions."
            }
          ],
          "x-enum-description": "Kind of evaluation object to which a reviewer comment is attached.",
          "description": "Kind of evaluation object addressed by the comment.",
          "x-presence": "explicit"
        },
        "objectId": {
          "type": "string",
          "description": "Identifier of the evaluation object addressed by the comment.",
          "x-presence": "implicit"
        },
        "content": {
          "type": "string",
          "description": "Text content of the evaluation comment.",
          "x-presence": "implicit"
        },
        "authorUserId": {
          "type": "string",
          "description": "Identifier recorded for the user who authored the comment. A stored author identifier alone does not attest to verified human provenance.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "Comment",
        "url": "/api/models/schema-ove4pre5lb#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_DeleteCommentRequest": {
      "type": "object",
      "description": "Inputs for deleting a comment attached to an evaluation object.",
      "properties": {
        "commentId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation comment.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "commentId"
      ],
      "required": [
        "commentId"
      ]
    },
    "platform_v1_services_eval_gateway_v1_DeleteCommentResponse": {
      "type": "object",
      "description": "Result of deleting a comment attached to an evaluation object.",
      "properties": {
        "deleted": {
          "type": "boolean",
          "description": "Whether the deletion operation reported that it deleted the selected resource.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListDatasetsRequest": {
      "type": "object",
      "description": "Inputs for listing evaluation datasets.",
      "properties": {
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number requested from the backing service.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListDatasetsResponse": {
      "type": "object",
      "description": "Result of listing evaluation datasets.",
      "properties": {
        "datasets": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_Dataset"
          },
          "description": "Evaluation datasets included in this result page.",
          "x-presence": "collection"
        },
        "page": {
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_PageInfo"
            }
          ]
        }
      }
    },
    "llm_v1_services_eval_v1_Dataset": {
      "type": "object",
      "description": "Evaluation dataset metadata, item counts, run history, and input/output schemas.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "Identifier of the evaluation dataset.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Name identifying the evaluation dataset.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional attributes serialized as a JSON object.",
          "x-presence": "implicit"
        },
        "itemCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of dataset items reported for the dataset.",
          "x-presence": "implicit"
        },
        "runCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of runs reported for the evaluation dataset.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "lastRunAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the dataset was most recently evaluated.",
          "x-presence": "message"
        },
        "inputSchemaJson": {
          "type": "string",
          "description": "JSON Schema describing dataset input values.",
          "x-presence": "implicit"
        },
        "expectedOutputSchemaJson": {
          "type": "string",
          "description": "JSON Schema describing expected dataset output values.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Dataset",
        "url": "/api/models/schema-1ja63aqvqo#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_CreateDatasetRequest": {
      "type": "object",
      "description": "Inputs for creating an evaluation dataset.",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Name assigned to the evaluation dataset.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "description": "Human-readable explanation of the evaluation record.",
          "x-presence": "implicit"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional evaluation metadata serialized as JSON text.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "name"
      ],
      "required": [
        "name"
      ]
    },
    "platform_v1_services_eval_gateway_v1_CreateDatasetResponse": {
      "type": "object",
      "description": "Result of creating an evaluation dataset.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "Identifier of the evaluation dataset.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_AddDatasetItemRequest": {
      "type": "object",
      "description": "Inputs for adding an input and expected-output pair in an evaluation dataset.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of these two conditions must hold: source\\_trace\\_id is nonempty; both conversation\\_id and source\\_user\\_message\\_id are nonempty. When source\\_trace\\_id is nonempty, the pair must be incomplete, but this predicate does not forbid one nonempty partial-pair field. When source\\_trace\\_id is empty, both fields in the pair must be nonempty.",
      "properties": {
        "datasetId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation dataset.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "inputJson": {
          "type": "string",
          "description": "Dataset item input serialized as JSON text.",
          "x-presence": "implicit"
        },
        "expectedOutputJson": {
          "type": "string",
          "description": "Expected dataset item output serialized as JSON text.",
          "x-presence": "implicit"
        },
        "sourceTraceId": {
          "type": "string",
          "description": "Identifier of the trace used as the source for the dataset item.",
          "x-presence": "implicit"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional evaluation metadata serialized as JSON text.",
          "x-presence": "implicit"
        },
        "conversationId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the conversation associated with the evaluation record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "sourceUserMessageId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the user message that originated the evaluated generation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.source_reference",
            "message": "exactly one of source_trace_id or (conversation_id + source_user_message_id) must be set",
            "expression": "[size(this.source_trace_id) > 0, size(this.conversation_id) > 0 && size(this.source_user_message_id) > 0].filter(f, f).size() == 1"
          }
        ]
      },
      "x-validation-scope": "request",
      "x-request-required": [
        "datasetId"
      ],
      "required": [
        "datasetId"
      ]
    },
    "platform_v1_services_eval_gateway_v1_AddDatasetItemResponse": {
      "type": "object",
      "description": "Result of adding an input and expected-output pair in an evaluation dataset.",
      "properties": {
        "itemId": {
          "type": "string",
          "description": "Identifier of the evaluation dataset item added by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListDatasetItemsRequest": {
      "type": "object",
      "description": "Inputs for listing input and expected-output pairs in an evaluation dataset.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "Identifier of the evaluation dataset.",
          "x-presence": "implicit"
        },
        "datasetName": {
          "type": "string",
          "description": "Name used to address the evaluation dataset.",
          "x-presence": "implicit"
        },
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number requested from the backing service.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "sourceTraceId": {
          "type": "string",
          "description": "Identifier of the trace used as the source for the dataset item.",
          "x-presence": "implicit"
        },
        "onlyMissingExpectedOutput": {
          "type": "boolean",
          "description": "Backs the curation list: items still lacking ground truth.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListDatasetItemsResponse": {
      "type": "object",
      "description": "Result of listing input and expected-output pairs in an evaluation dataset.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_DatasetItem"
          },
          "description": "Evaluation dataset items in this page.",
          "x-presence": "collection"
        },
        "page": {
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_PageInfo"
            }
          ]
        }
      }
    },
    "llm_v1_services_eval_v1_DatasetItem": {
      "type": "object",
      "description": "One evaluation input with its expected output and source trace references.",
      "properties": {
        "itemId": {
          "type": "string",
          "description": "Identifier of the evaluation dataset item.",
          "x-presence": "implicit"
        },
        "datasetId": {
          "type": "string",
          "description": "Identifier of the evaluation dataset.",
          "x-presence": "implicit"
        },
        "datasetName": {
          "type": "string",
          "description": "Name of the evaluation dataset.",
          "x-presence": "implicit"
        },
        "inputJson": {
          "type": "string",
          "description": "Evaluation input serialized as JSON.",
          "x-presence": "implicit"
        },
        "expectedOutputJson": {
          "type": "string",
          "description": "Expected output serialized as JSON. Empty until a curator supplies an expected result.",
          "x-presence": "implicit"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional attributes serialized as a JSON object.",
          "x-presence": "implicit"
        },
        "sourceTraceId": {
          "type": "string",
          "description": "Identifier of the trace from which the dataset item originated.",
          "x-presence": "implicit"
        },
        "sourceObservationId": {
          "type": "string",
          "description": "Identifier of the observation from which the dataset item originated.",
          "x-presence": "implicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "DATASET_ITEM_STATUS_ACTIVE",
                "DATASET_ITEM_STATUS_ARCHIVED"
              ],
              "x-enumDescriptions": {
                "DATASET_ITEM_STATUS_ACTIVE": "The dataset item is active.",
                "DATASET_ITEM_STATUS_ARCHIVED": "The dataset item is archived and retained as historical content."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "DATASET_ITEM_STATUS_ACTIVE",
              "number": 0,
              "canonical": true,
              "description": "The dataset item is active."
            },
            {
              "name": "DATASET_ITEM_STATUS_ARCHIVED",
              "number": 1,
              "canonical": true,
              "description": "The dataset item is archived and retained as historical content."
            }
          ],
          "x-enum-description": "Whether a dataset item is active or retained as archived content.",
          "description": "State controlling whether the dataset item participates in evaluation.",
          "x-presence": "explicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "DatasetItem",
        "url": "/api/models/schema-1jcdgbb5sm#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_UpdateDatasetItemRequest": {
      "type": "object",
      "description": "Inputs for updating an input and expected-output pair in an evaluation dataset.",
      "properties": {
        "itemId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation dataset item being updated.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "datasetId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation dataset.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "inputJson": {
          "type": "string",
          "description": "Dataset item input serialized as JSON text.",
          "x-presence": "implicit"
        },
        "expectedOutputJson": {
          "type": "string",
          "description": "Expected dataset item output serialized as JSON text.",
          "x-presence": "implicit"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional evaluation metadata serialized as JSON text.",
          "x-presence": "implicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "DATASET_ITEM_STATUS_ACTIVE",
                "DATASET_ITEM_STATUS_ARCHIVED"
              ],
              "x-enumDescriptions": {
                "DATASET_ITEM_STATUS_ACTIVE": "The dataset item is active.",
                "DATASET_ITEM_STATUS_ARCHIVED": "The dataset item is archived and retained as historical content."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "DATASET_ITEM_STATUS_ACTIVE",
              "number": 0,
              "canonical": true,
              "description": "The dataset item is active."
            },
            {
              "name": "DATASET_ITEM_STATUS_ARCHIVED",
              "number": 1,
              "canonical": true,
              "description": "The dataset item is archived and retained as historical content."
            }
          ],
          "x-enum-description": "Whether a dataset item is active or retained as archived content.",
          "description": "Whether the evaluation dataset item is active or archived.",
          "x-presence": "explicit"
        }
      },
      "x-request-required": [
        "itemId",
        "datasetId"
      ],
      "required": [
        "itemId",
        "datasetId"
      ]
    },
    "platform_v1_services_eval_gateway_v1_UpdateDatasetItemResponse": {
      "type": "object",
      "description": "Result of updating an input and expected-output pair in an evaluation dataset.",
      "properties": {
        "itemId": {
          "type": "string",
          "description": "Identifier of the evaluation dataset item updated by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListDatasetRunsRequest": {
      "type": "object",
      "description": "Inputs for listing recorded runs against an evaluation dataset.",
      "properties": {
        "datasetName": {
          "type": "string",
          "minLength": 1,
          "description": "Name used to address the evaluation dataset.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "cursor": {
          "type": "string",
          "maxLength": 4096,
          "description": "Opaque cursor from the previous response’s cursor\\_page.next\\_cursor. Leave empty for the first page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "4096"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "datasetName"
      ],
      "required": [
        "datasetName"
      ]
    },
    "platform_v1_services_eval_gateway_v1_ListDatasetRunsResponse": {
      "type": "object",
      "description": "Result of listing recorded runs against an evaluation dataset.",
      "properties": {
        "runs": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_DatasetRun"
          },
          "description": "Evaluation dataset runs included in this result page.",
          "x-presence": "collection"
        },
        "cursorPage": {
          "description": "Cursor pagination details accompanying this result page.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_CursorPageInfo"
            }
          ]
        }
      }
    },
    "llm_v1_services_eval_v1_DatasetRun": {
      "type": "object",
      "description": "Metadata describing one execution of an evaluation dataset.",
      "properties": {
        "runId": {
          "type": "string",
          "description": "Identifier of the evaluation dataset run.",
          "x-presence": "implicit"
        },
        "datasetId": {
          "type": "string",
          "description": "Identifier of the evaluation dataset.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Name assigned to this execution of the evaluation dataset.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional attributes serialized as a JSON object.",
          "x-presence": "implicit"
        },
        "itemCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of dataset items reported for this run.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "DatasetRun",
        "url": "/api/models/schema-1jehhpchdc#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_GetDatasetRunRequest": {
      "type": "object",
      "description": "Inputs for retrieving a named run against an evaluation dataset.",
      "properties": {
        "datasetName": {
          "type": "string",
          "minLength": 1,
          "description": "Name used to address the evaluation dataset.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "runName": {
          "type": "string",
          "minLength": 1,
          "description": "Name assigned to the evaluation dataset run.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "datasetName",
        "runName"
      ],
      "required": [
        "datasetName",
        "runName"
      ]
    },
    "platform_v1_services_eval_gateway_v1_GetDatasetRunResponse": {
      "type": "object",
      "description": "Result of retrieving a named run against an evaluation dataset.",
      "properties": {
        "run": {
          "description": "Evaluation dataset run returned by the lookup.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_DatasetRun"
            }
          ]
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListAnnotationQueuesRequest": {
      "type": "object",
      "description": "Inputs for listing queues of evaluation objects awaiting annotation.",
      "properties": {
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number requested from the backing service.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListAnnotationQueuesResponse": {
      "type": "object",
      "description": "Result of listing queues of evaluation objects awaiting annotation.",
      "properties": {
        "queues": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_AnnotationQueue"
          },
          "description": "Evaluation annotation queues included in this result page.",
          "x-presence": "collection"
        },
        "page": {
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_PageInfo"
            }
          ]
        }
      }
    },
    "llm_v1_services_eval_v1_AnnotationQueue": {
      "type": "object",
      "description": "Named work queue assigning score configurations to human annotation items.",
      "properties": {
        "queueId": {
          "type": "string",
          "description": "Identifier of the annotation queue.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name of the annotation work queue.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit"
        },
        "scoreConfigIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Score configurations available when annotating items in this queue. At least one configuration is required.",
          "x-presence": "collection"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        },
        "pendingCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of queue items awaiting annotation.",
          "x-presence": "implicit"
        },
        "completedCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of queue items reported completed.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "AnnotationQueue",
        "url": "/api/models/schema-1j9496mkdg#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_CreateAnnotationQueueRequest": {
      "type": "object",
      "description": "Inputs for creating a queue of evaluation objects awaiting annotation.",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Name assigned to the evaluation annotation queue.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "scoreConfigIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1,
          "description": "At least one: a queue's fixed config set is the whole difference between it and ad-hoc annotation.",
          "x-presence": "collection",
          "x-protovalidate": {
            "repeated": {
              "minItems": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "description": "Human-readable explanation of the evaluation record.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "name",
        "scoreConfigIds"
      ],
      "required": [
        "name",
        "scoreConfigIds"
      ]
    },
    "platform_v1_services_eval_gateway_v1_CreateAnnotationQueueResponse": {
      "type": "object",
      "description": "Result of creating a queue of evaluation objects awaiting annotation.",
      "properties": {
        "queueId": {
          "type": "string",
          "description": "Identifier of the evaluation annotation queue.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_EnqueueForAnnotationRequest": {
      "type": "object",
      "description": "Inputs for adding an evaluation object to an annotation queue.",
      "properties": {
        "queueId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation annotation queue.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "targetType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EVAL_TARGET_TYPE_TRACE",
                "EVAL_TARGET_TYPE_OBSERVATION",
                "EVAL_TARGET_TYPE_DATASET_RUN",
                "EVAL_TARGET_TYPE_SESSION"
              ],
              "x-enumDescriptions": {
                "EVAL_TARGET_TYPE_TRACE": "A complete trace identified by its trace identifier.",
                "EVAL_TARGET_TYPE_OBSERVATION": "A specific observation within a trace.",
                "EVAL_TARGET_TYPE_DATASET_RUN": "An evaluation run over a dataset.",
                "EVAL_TARGET_TYPE_SESSION": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1,
                2,
                3
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "EVAL_TARGET_TYPE_TRACE",
              "number": 0,
              "canonical": true,
              "description": "A complete trace identified by its trace identifier."
            },
            {
              "name": "EVAL_TARGET_TYPE_OBSERVATION",
              "number": 1,
              "canonical": true,
              "description": "A specific observation within a trace."
            },
            {
              "name": "EVAL_TARGET_TYPE_DATASET_RUN",
              "number": 2,
              "canonical": true,
              "description": "An evaluation run over a dataset."
            },
            {
              "name": "EVAL_TARGET_TYPE_SESSION",
              "number": 3,
              "canonical": true,
              "description": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
            }
          ],
          "x-enum-description": "Kind of evaluation object a score or evaluation configuration addresses.",
          "description": "Kind of evaluation object assigned to the annotation queue.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "targetId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation object assigned to the annotation queue.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "queueId",
        "targetType",
        "targetId"
      ],
      "required": [
        "queueId",
        "targetType",
        "targetId"
      ]
    },
    "platform_v1_services_eval_gateway_v1_EnqueueForAnnotationResponse": {
      "type": "object",
      "description": "Result of adding an evaluation object to an annotation queue.",
      "properties": {
        "queueItemId": {
          "type": "string",
          "description": "Identifier assigned to the item in the annotation queue.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_ListAnnotationQueueItemsRequest": {
      "type": "object",
      "description": "Inputs for listing evaluation objects in an annotation queue.",
      "properties": {
        "queueId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation annotation queue.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number requested from the backing service.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum number of entries in a result page.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ANNOTATION_QUEUE_ITEM_STATUS_PENDING",
                "ANNOTATION_QUEUE_ITEM_STATUS_COMPLETED"
              ],
              "x-enumDescriptions": {
                "ANNOTATION_QUEUE_ITEM_STATUS_PENDING": "The item is waiting for its annotation to be completed.",
                "ANNOTATION_QUEUE_ITEM_STATUS_COMPLETED": "Annotation of the queue item has been completed."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "ANNOTATION_QUEUE_ITEM_STATUS_PENDING",
              "number": 0,
              "canonical": true,
              "description": "The item is waiting for its annotation to be completed."
            },
            {
              "name": "ANNOTATION_QUEUE_ITEM_STATUS_COMPLETED",
              "number": 1,
              "canonical": true,
              "description": "Annotation of the queue item has been completed."
            }
          ],
          "x-enum-description": "Progress of a work item in a human annotation queue.",
          "description": "Annotation state used to restrict the queue listing. Omit to include both pending and completed items.",
          "x-presence": "explicit"
        }
      },
      "x-request-required": [
        "queueId"
      ],
      "required": [
        "queueId"
      ]
    },
    "platform_v1_services_eval_gateway_v1_ListAnnotationQueueItemsResponse": {
      "type": "object",
      "description": "Result of listing evaluation objects in an annotation queue.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_AnnotationQueueItem"
          },
          "description": "Evaluation annotation queue items in this page.",
          "x-presence": "collection"
        },
        "page": {
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_PageInfo"
            }
          ]
        }
      }
    },
    "llm_v1_services_eval_v1_AnnotationQueueItem": {
      "type": "object",
      "description": "Evaluation object assigned to an annotation queue with completion state and attribution.",
      "properties": {
        "itemId": {
          "type": "string",
          "description": "Identifier of the annotation queue item.",
          "x-presence": "implicit"
        },
        "queueId": {
          "type": "string",
          "description": "Identifier of the annotation queue.",
          "x-presence": "implicit"
        },
        "objectId": {
          "type": "string",
          "description": "Identifier of the evaluation object addressed by the annotation queue item.",
          "x-presence": "implicit"
        },
        "objectType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EVAL_TARGET_TYPE_TRACE",
                "EVAL_TARGET_TYPE_OBSERVATION",
                "EVAL_TARGET_TYPE_DATASET_RUN",
                "EVAL_TARGET_TYPE_SESSION"
              ],
              "x-enumDescriptions": {
                "EVAL_TARGET_TYPE_TRACE": "A complete trace identified by its trace identifier.",
                "EVAL_TARGET_TYPE_OBSERVATION": "A specific observation within a trace.",
                "EVAL_TARGET_TYPE_DATASET_RUN": "An evaluation run over a dataset.",
                "EVAL_TARGET_TYPE_SESSION": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "EVAL_TARGET_TYPE_TRACE",
              "number": 0,
              "canonical": true,
              "description": "A complete trace identified by its trace identifier."
            },
            {
              "name": "EVAL_TARGET_TYPE_OBSERVATION",
              "number": 1,
              "canonical": true,
              "description": "A specific observation within a trace."
            },
            {
              "name": "EVAL_TARGET_TYPE_DATASET_RUN",
              "number": 2,
              "canonical": true,
              "description": "An evaluation run over a dataset."
            },
            {
              "name": "EVAL_TARGET_TYPE_SESSION",
              "number": 3,
              "canonical": true,
              "description": "A session grouping multiple traces. The evaluation harness attaches session-scoped judge scores directly; the provider does not expose a session-level evaluator target."
            }
          ],
          "x-enum-description": "Kind of evaluation object a score or evaluation configuration addresses.",
          "description": "Kind of evaluation object addressed by the annotation queue item.",
          "x-presence": "explicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ANNOTATION_QUEUE_ITEM_STATUS_PENDING",
                "ANNOTATION_QUEUE_ITEM_STATUS_COMPLETED"
              ],
              "x-enumDescriptions": {
                "ANNOTATION_QUEUE_ITEM_STATUS_PENDING": "The item is waiting for its annotation to be completed.",
                "ANNOTATION_QUEUE_ITEM_STATUS_COMPLETED": "Annotation of the queue item has been completed."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "ANNOTATION_QUEUE_ITEM_STATUS_PENDING",
              "number": 0,
              "canonical": true,
              "description": "The item is waiting for its annotation to be completed."
            },
            {
              "name": "ANNOTATION_QUEUE_ITEM_STATUS_COMPLETED",
              "number": 1,
              "canonical": true,
              "description": "Annotation of the queue item has been completed."
            }
          ],
          "x-enum-description": "Progress of a work item in a human annotation queue.",
          "description": "Completion state of the annotation queue item.",
          "x-presence": "explicit"
        },
        "completedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the operation was marked complete.",
          "x-presence": "message"
        },
        "completedBy": {
          "type": "string",
          "description": "Identifier of the user who completed the annotation queue item.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "AnnotationQueueItem",
        "url": "/api/models/schema-ovc35nr9td#response"
      }
    },
    "platform_v1_services_eval_gateway_v1_CompleteAnnotationQueueItemRequest": {
      "type": "object",
      "description": "Inputs for completing an evaluation object in an annotation queue.",
      "properties": {
        "queueId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation annotation queue.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "itemId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the annotation queue item to complete.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "queueId",
        "itemId"
      ],
      "required": [
        "queueId",
        "itemId"
      ]
    },
    "platform_v1_services_eval_gateway_v1_CompleteAnnotationQueueItemResponse": {
      "type": "object",
      "description": "Result of completing an evaluation object in an annotation queue.",
      "properties": {
        "item": {
          "description": "Annotation queue item returned by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_AnnotationQueueItem"
            }
          ]
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_GetOverviewRequest": {
      "type": "object",
      "description": "Inputs for retrieving aggregate evaluation activity and score statistics.",
      "properties": {
        "fromTime": {
          "type": "string",
          "format": "date-time",
          "description": "Beginning of the time range used to select evaluation records.",
          "x-presence": "message"
        },
        "toTime": {
          "type": "string",
          "format": "date-time",
          "description": "End of the time range used to select evaluation records.",
          "x-presence": "message"
        },
        "profileId": {
          "type": "string",
          "maxLength": 256,
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        },
        "environment": {
          "type": "string",
          "maxLength": 256,
          "description": "Environment label used to select evaluation records.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "256"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "platform_v1_services_eval_gateway_v1_GetOverviewResponse": {
      "type": "object",
      "description": "Result of retrieving aggregate evaluation activity and score statistics.",
      "properties": {
        "overview": {
          "description": "Aggregate evaluation activity and score statistics for the selected scope.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_services_eval_v1_EvalOverview"
            }
          ]
        }
      }
    },
    "llm_v1_services_eval_v1_EvalOverview": {
      "type": "object",
      "description": "Aggregated trace, score, latency, and profile metrics for an evaluation window.",
      "properties": {
        "totalTraces": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total trace count reported for the selected evaluation window.",
          "x-presence": "implicit"
        },
        "tracesByName": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_NamedCount"
          },
          "description": "Trace counts grouped by trace name.",
          "x-presence": "collection"
        },
        "tracesOverTime": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_TimeSeriesPoint"
          },
          "description": "Trace counts grouped into time buckets.",
          "x-presence": "collection"
        },
        "observationsByLevel": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_TimeSeriesPoint"
          },
          "description": "Observation counts grouped by reported log level.",
          "x-presence": "collection"
        },
        "scores": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_ScoreAggregate"
          },
          "description": "Score aggregates grouped separately by metric name and source.",
          "x-presence": "collection"
        },
        "scoreMovingAverage": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_TimeSeriesPoint"
          },
          "description": "Moving-average score series returned for the selected window.",
          "x-presence": "collection"
        },
        "scoredTraceRatio": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Coverage card: share of traces carrying any score, and the annotated count.",
          "x-presence": "implicit"
        },
        "annotatedTraceCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of traces reported to have annotations in the selected window.",
          "x-presence": "implicit"
        },
        "byProfile": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_ProfileQualityRow"
          },
          "description": "Evaluation metrics grouped by agent profile.",
          "x-presence": "collection"
        },
        "latencyPercentiles": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_LatencyPercentileRow"
          },
          "description": "Latency percentile summaries grouped by trace name.",
          "x-presence": "collection"
        },
        "recentLowScores": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_eval_v1_Score"
          },
          "description": "Recent scores selected by the overview’s low-score query.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "EvalOverview",
        "url": "/api/models/schema-1js2bf073d#response"
      }
    },
    "llm_v1_services_eval_v1_NamedCount": {
      "type": "object",
      "description": "Count of evaluation records grouped under a shared label.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Grouping label associated with this record count.",
          "x-presence": "implicit"
        },
        "count": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of evaluation records represented by this group.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "NamedCount",
        "url": "/api/models/schema-1jiel5uim6#response"
      }
    },
    "llm_v1_services_eval_v1_TimeSeriesPoint": {
      "type": "object",
      "description": "Numeric evaluation measurement associated with a time bucket and series.",
      "properties": {
        "bucket": {
          "type": "string",
          "format": "date-time",
          "description": "Time bucket identifying this point in the evaluation series.",
          "x-presence": "message"
        },
        "value": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Numeric measurement recorded for this time bucket and series.",
          "x-presence": "implicit"
        },
        "series": {
          "type": "string",
          "description": "Series key when the query is split — a score name, level, or profile id.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TimeSeriesPoint",
        "url": "/api/models/schema-1jq6h5scn9#response"
      }
    },
    "llm_v1_services_eval_v1_ScoreAggregate": {
      "type": "object",
      "description": "Count and average for scores grouped by name and source.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Metric name shared by the aggregated scores.",
          "x-presence": "implicit"
        },
        "source": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SCORE_SOURCE_JUDGE",
                "SCORE_SOURCE_HUMAN",
                "SCORE_SOURCE_USER",
                "SCORE_SOURCE_HARNESS",
                "SCORE_SOURCE_EVAL"
              ],
              "x-enumDescriptions": {
                "SCORE_SOURCE_JUDGE": "A score produced by an automated judge.",
                "SCORE_SOURCE_HUMAN": "A score entered by a human reviewer through the annotation path.",
                "SCORE_SOURCE_USER": "Feedback supplied by an end user.",
                "SCORE_SOURCE_HARNESS": "A score written by an evaluation harness or another API-based producer.",
                "SCORE_SOURCE_EVAL": "A read-only score produced by the evaluation provider's managed evaluators; it cannot be written through the public score API."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SCORE_SOURCE_JUDGE",
              "number": 0,
              "canonical": true,
              "description": "A score produced by an automated judge."
            },
            {
              "name": "SCORE_SOURCE_HUMAN",
              "number": 1,
              "canonical": true,
              "description": "A score entered by a human reviewer through the annotation path."
            },
            {
              "name": "SCORE_SOURCE_USER",
              "number": 2,
              "canonical": true,
              "description": "Feedback supplied by an end user."
            },
            {
              "name": "SCORE_SOURCE_HARNESS",
              "number": 3,
              "canonical": true,
              "description": "A score written by an evaluation harness or another API-based producer."
            },
            {
              "name": "SCORE_SOURCE_EVAL",
              "number": 4,
              "canonical": true,
              "description": "A read-only score produced by the evaluation provider's managed evaluators; it cannot be written through the public score API."
            }
          ],
          "x-enum-description": "Platform classification of who produced an evaluation score. The provider source label retains its original vocabulary: writes accept API or ANNOTATION, while EVAL is reserved for the provider's internal evaluators and is rejected through its public API.\n\nSCORE\\_SOURCE\\_HUMAN maps to ANNOTATION. SCORE\\_SOURCE\\_USER, SCORE\\_SOURCE\\_JUDGE and SCORE\\_SOURCE\\_HARNESS map to API.\n\nReviewer and end-user scores also use separate name namespaces: reviewer scores do not use names beginning with user-feedback-.",
          "description": "Source classification reported for the evaluation score.",
          "x-presence": "explicit"
        },
        "count": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of evaluation records represented by this group.",
          "x-presence": "implicit"
        },
        "average": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Average score value reported for the aggregate.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ScoreAggregate",
        "url": "/api/models/schema-1jo37n9pqa#response"
      }
    },
    "llm_v1_services_eval_v1_ProfileQualityRow": {
      "type": "object",
      "description": "Aggregated evaluation results and usage for one agent profile.",
      "properties": {
        "profileId": {
          "type": "string",
          "description": "Identifier of the agent profile associated with the generation.",
          "x-presence": "implicit"
        },
        "traceCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of traces represented by this summary or group.",
          "x-presence": "implicit"
        },
        "avgEndUserRating": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Average end-user rating reported for the selected generation group.",
          "x-presence": "implicit"
        },
        "avgJudgeScore": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Average automated judge score reported for the selected generation group.",
          "x-presence": "implicit"
        },
        "thumbsDownCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of negative thumb ratings reported for the selected group.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ProfileQualityRow",
        "url": "/api/models/schema-1jku9efe5c#response"
      }
    },
    "llm_v1_services_eval_v1_LatencyPercentileRow": {
      "type": "object",
      "description": "Latency percentiles, in seconds, aggregated for one evaluation trace name.",
      "properties": {
        "traceName": {
          "type": "string",
          "description": "Display name used to group or identify the evaluation trace.",
          "x-presence": "implicit"
        },
        "p50": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "50th-percentile latency for the trace group, in seconds.",
          "x-presence": "implicit"
        },
        "p90": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "90th-percentile latency for the trace group, in seconds.",
          "x-presence": "implicit"
        },
        "p95": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "95th-percentile latency for the trace group, in seconds.",
          "x-presence": "implicit"
        },
        "p99": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "99th-percentile latency for the trace group, in seconds.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "LatencyPercentileRow",
        "url": "/api/models/schema-1jgrpr157a#response"
      }
    },
    "notification_v1_services_gateway_v1_RegisterPushDeviceRequest": {
      "type": "object",
      "description": "Inputs for registering a push-notification device. Caller user\\_id is derived from authentication headers by the gateway.",
      "properties": {
        "fcmToken": {
          "type": "string",
          "minLength": 1,
          "description": "Firebase Cloud Messaging token identifying the push delivery target.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "platform": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "PLATFORM_IOS",
                "PLATFORM_ANDROID",
                "PLATFORM_WEB"
              ],
              "x-enumDescriptions": {
                "PLATFORM_IOS": "An Apple iOS device registration.",
                "PLATFORM_ANDROID": "An Android device registration.",
                "PLATFORM_WEB": "A web-browser push registration."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "PLATFORM_IOS",
              "number": 0,
              "canonical": true,
              "description": "An Apple iOS device registration."
            },
            {
              "name": "PLATFORM_ANDROID",
              "number": 1,
              "canonical": true,
              "description": "An Android device registration."
            },
            {
              "name": "PLATFORM_WEB",
              "number": 2,
              "canonical": true,
              "description": "A web-browser push registration."
            }
          ],
          "x-enum-description": "Client platform associated with a push-notification device registration.",
          "description": "Device platform associated with the registered push token.",
          "x-presence": "explicit"
        },
        "deviceId": {
          "type": "string",
          "description": "Client-provided identifier of the device being registered.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "fcmToken"
      ],
      "required": [
        "fcmToken"
      ]
    },
    "notification_v1_RegisterPushDeviceResponse": {
      "type": "object",
      "description": "Result payload for registering an FCM token as a user’s push notification delivery target.",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Whether the operation reports a successful result.",
          "x-presence": "implicit"
        },
        "subscriberId": {
          "type": "string",
          "description": "Identifier of the notification subscriber.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_UnregisterPushDeviceRequest": {
      "type": "object",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "properties": {
        "fcmToken": {
          "type": "string",
          "minLength": 1,
          "description": "Firebase Cloud Messaging token identifying the push delivery target.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "fcmToken"
      ],
      "required": [
        "fcmToken"
      ]
    },
    "notification_v1_UnregisterPushDeviceResponse": {
      "type": "object",
      "description": "Result payload for removing an FCM token from the user’s registered push delivery targets.",
      "properties": {
        "subscriberId": {
          "type": "string",
          "description": "Identifier of the notification subscriber.",
          "x-presence": "implicit"
        },
        "remainingCredentialCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of push credentials remaining after unregistering the device.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_GetRegisteredChannelsRequest": {
      "type": "object",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "properties": {}
    },
    "notification_v1_GetRegisteredChannelsResponse": {
      "type": "object",
      "description": "Result payload for reading the notification channels with registered delivery credentials.",
      "properties": {
        "channels": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_ChannelRegistration"
          },
          "description": "Registration status and credential counts for the subscriber’s delivery channels.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_ChannelRegistration": {
      "type": "object",
      "description": "Registration state and credential count for one notification channel.",
      "properties": {
        "channel": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "CHANNEL_PUSH",
                "CHANNEL_IN_APP",
                "CHANNEL_EMAIL",
                "CHANNEL_SMS",
                "CHANNEL_CHAT"
              ],
              "x-enumDescriptions": {
                "CHANNEL_PUSH": "Deliver a device push notification through the configured push provider.\n\nFCM/APNS push notifications",
                "CHANNEL_IN_APP": "Deliver the notification to the in-app inbox.\n\nNovu Inbox (notification center)",
                "CHANNEL_EMAIL": "Send a one-way email notification through the configured email provider.\n\nSendGrid/SES - do-not-reply only",
                "CHANNEL_SMS": "Send a one-way SMS notification, such as an alert or authentication message.\n\nTwilio - do-not-reply only (alerts, 2FA)",
                "CHANNEL_CHAT": "Send a one-way message to an integrated chat destination.\n\nSlack, Discord, MS Teams - one-way notifications"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "CHANNEL_PUSH",
              "number": 0,
              "canonical": true,
              "description": "Deliver a device push notification through the configured push provider.\n\nFCM/APNS push notifications"
            },
            {
              "name": "CHANNEL_IN_APP",
              "number": 1,
              "canonical": true,
              "description": "Deliver the notification to the in-app inbox.\n\nNovu Inbox (notification center)"
            },
            {
              "name": "CHANNEL_EMAIL",
              "number": 2,
              "canonical": true,
              "description": "Send a one-way email notification through the configured email provider.\n\nSendGrid/SES - do-not-reply only"
            },
            {
              "name": "CHANNEL_SMS",
              "number": 3,
              "canonical": true,
              "description": "Send a one-way SMS notification, such as an alert or authentication message.\n\nTwilio - do-not-reply only (alerts, 2FA)"
            },
            {
              "name": "CHANNEL_CHAT",
              "number": 4,
              "canonical": true,
              "description": "Send a one-way message to an integrated chat destination.\n\nSlack, Discord, MS Teams - one-way notifications"
            }
          ],
          "x-enum-description": "Delivery channel for a notification that does not expect a reply.",
          "description": "Notification channel represented by this registration.",
          "x-presence": "explicit"
        },
        "registered": {
          "type": "boolean",
          "description": "Whether the subscriber has a registration for this channel.",
          "x-presence": "implicit"
        },
        "credentialCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of delivery credentials registered for the channel.\n\ne.g., number of device tokens",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ChannelRegistration",
        "url": "/api/models/schema-1kaqut27uf#response"
      }
    },
    "notification_v1_services_gateway_v1_GetInboxSessionRequest": {
      "type": "object",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "properties": {}
    },
    "notification_v1_GetInboxSessionResponse": {
      "type": "object",
      "description": "Result payload for issuing connection details for a subscriber’s inbox session.",
      "properties": {
        "token": {
          "type": "string",
          "description": "Token issued for the subscriber’s inbox session.",
          "x-presence": "implicit"
        },
        "socketUrl": {
          "type": "string",
          "description": "WebSocket endpoint provided for the inbox session.",
          "x-presence": "implicit"
        },
        "expiresIn": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Remaining lifetime of the inbox session token, in seconds.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_SendNotificationRequest": {
      "type": "object",
      "description": "Inputs for dispatching a notification. user\\_id identifies the recipient, not the caller.",
      "properties": {
        "workflowId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification workflow to trigger.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification's intended recipient.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "payload": {
          "type": "object",
          "additionalProperties": true,
          "description": "Template variables and event data passed to the notification workflow.",
          "x-presence": "message"
        },
        "overrides": {
          "type": "object",
          "additionalProperties": true,
          "description": "Provider-specific overrides passed through to delivery, such as an FCM data payload.",
          "x-presence": "message"
        },
        "transactionId": {
          "type": "string",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "workflowId",
        "userId"
      ],
      "required": [
        "workflowId",
        "userId"
      ]
    },
    "notification_v1_SendNotificationResponse": {
      "type": "object",
      "description": "Result payload for triggering a notification workflow for a selected user.",
      "properties": {
        "acknowledged": {
          "type": "boolean",
          "description": "Whether the notification provider acknowledged the trigger.",
          "x-presence": "implicit"
        },
        "status": {
          "type": "string",
          "description": "Descriptive status reported by the notification provider, not a fixed set of states. \"processed\" means the workflow was accepted for processing; it does not confirm delivery.",
          "x-presence": "implicit"
        },
        "transactionId": {
          "type": "string",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit"
        },
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Errors reported while processing notification requests.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_services_gateway_v1_SendBulkNotificationRequest": {
      "type": "object",
      "description": "events contain recipient user\\_ids, not the caller.",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_BulkTriggerEvent"
          },
          "description": "Notification trigger events submitted together. Submit at most 100 events per batch.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_BulkTriggerEvent": {
      "type": "object",
      "description": "One notification workflow trigger included in a bulk submission.",
      "properties": {
        "workflowId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification workflow to trigger.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the user associated with the operation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "payload": {
          "type": "object",
          "additionalProperties": true,
          "description": "Template variables and event data passed to the notification workflow.",
          "x-presence": "message"
        },
        "overrides": {
          "type": "object",
          "additionalProperties": true,
          "description": "Provider-specific overrides applied to the notification trigger.",
          "x-presence": "message"
        },
        "transactionId": {
          "type": "string",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "BulkTriggerEvent",
        "url": "/api/models/schema-oiqb7f8bbv#request"
      },
      "x-request-required": [
        "workflowId",
        "userId"
      ],
      "required": [
        "workflowId",
        "userId"
      ]
    },
    "notification_v1_SendBulkNotificationResponse": {
      "type": "object",
      "description": "Result payload for triggering multiple notification workflow events together.",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_BulkTriggerResult"
          },
          "description": "Provider acknowledgements and errors for the submitted notification triggers.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_BulkTriggerResult": {
      "type": "object",
      "description": "Provider acknowledgement and errors for one bulk notification trigger.",
      "properties": {
        "acknowledged": {
          "type": "boolean",
          "description": "Whether the notification provider acknowledged the trigger.",
          "x-presence": "implicit"
        },
        "status": {
          "type": "string",
          "description": "Status reported by the notification provider.",
          "x-presence": "implicit"
        },
        "transactionId": {
          "type": "string",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit"
        },
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Errors reported while processing notification requests.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "BulkTriggerResult",
        "url": "/api/models/schema-oisl2i7j7o#response"
      }
    },
    "notification_v1_services_gateway_v1_CancelNotificationRequest": {
      "type": "object",
      "description": "Inputs for cancelling a pending notification by transaction identifier.",
      "properties": {
        "transactionId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "transactionId"
      ],
      "required": [
        "transactionId"
      ]
    },
    "notification_v1_CancelNotificationResponse": {
      "type": "object",
      "description": "Result payload for cancelling a pending notification by transaction identifier.",
      "properties": {
        "cancelled": {
          "type": "boolean",
          "description": "Whether the notification cancellation was acknowledged.",
          "x-presence": "implicit"
        },
        "message": {
          "type": "string",
          "description": "Diagnostic or descriptive text returned by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_GetInboxFeedRequest": {
      "type": "object",
      "description": "Inputs for reading the caller’s notification inbox feed. Caller user\\_id is derived from authentication headers by the gateway.",
      "properties": {
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation, starting at 1.",
          "x-presence": "implicit"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "filter": {
          "description": "Selection criteria applied to the listing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_InboxFeedFilter"
            }
          ]
        }
      }
    },
    "notification_v1_InboxFeedFilter": {
      "type": "object",
      "description": "Read-state, category, tag, and archive criteria selecting inbox entries.",
      "properties": {
        "unseenOnly": {
          "type": "boolean",
          "description": "Whether the inbox filter selects only unseen messages.",
          "x-presence": "implicit"
        },
        "unreadOnly": {
          "type": "boolean",
          "description": "Whether the inbox filter selects only unread messages.",
          "x-presence": "implicit"
        },
        "feedIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Filter by Novu feed identifiers.",
          "x-presence": "collection"
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Categories used to select inbox messages.",
          "x-presence": "collection"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Filter by workflow tags (OR logic per Novu semantics).",
          "x-presence": "collection"
        },
        "archived": {
          "type": "boolean",
          "description": "When true, include archived messages. False or omission selects the live inbox and excludes archived messages.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "InboxFeedFilter",
        "url": "/api/models/schema-ojrenemkui#request"
      }
    },
    "notification_v1_GetInboxFeedResponse": {
      "type": "object",
      "description": "Result payload for paging through a subscriber’s inbox with read-state and category filters.",
      "properties": {
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_InboxMessage"
          },
          "description": "Inbox messages returned after applying the selected query or state change.",
          "x-presence": "collection"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of matching entries reported by the operation.",
          "x-presence": "implicit"
        },
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number reported for the returned inbox feed.",
          "x-presence": "implicit"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page size reported for the returned inbox feed.",
          "x-presence": "implicit"
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether the listing reports additional entries beyond this page.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_InboxMessage": {
      "type": "object",
      "description": "Notification content and interaction state displayed in a subscriber’s inbox.",
      "properties": {
        "messageId": {
          "type": "string",
          "description": "Identifier of the message represented by this inbox entry.",
          "x-presence": "implicit"
        },
        "notificationId": {
          "type": "string",
          "description": "Identifier of the notification represented by this inbox entry.",
          "x-presence": "implicit"
        },
        "title": {
          "type": "string",
          "description": "Title displayed for the inbox notification.",
          "x-presence": "implicit"
        },
        "body": {
          "type": "string",
          "description": "Body text of the inbox message.",
          "x-presence": "implicit"
        },
        "data": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional key-value attributes attached to the inbox notification.",
          "x-presence": "collection"
        },
        "deepLink": {
          "type": "string",
          "description": "Application deep link associated with the inbox message.",
          "x-presence": "implicit"
        },
        "imageUrl": {
          "type": "string",
          "description": "Image URL associated with the inbox message.",
          "x-presence": "implicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "MESSAGE_STATUS_UNSEEN",
                "MESSAGE_STATUS_SEEN",
                "MESSAGE_STATUS_READ",
                "MESSAGE_STATUS_UNREAD",
                "MESSAGE_STATUS_ARCHIVED"
              ],
              "x-enumDescriptions": {
                "MESSAGE_STATUS_UNSEEN": "The message has not been marked seen or read.",
                "MESSAGE_STATUS_SEEN": "The message has been marked seen and is not marked read or archived.",
                "MESSAGE_STATUS_READ": "The message has been marked read and is not archived.",
                "MESSAGE_STATUS_UNREAD": "Request clearing the read state; this is an update action rather than a distinct status emitted by message reads.",
                "MESSAGE_STATUS_ARCHIVED": "The message has been archived; this state takes precedence over seen and read when reported."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "MESSAGE_STATUS_UNSEEN",
              "number": 0,
              "canonical": true,
              "description": "The message has not been marked seen or read."
            },
            {
              "name": "MESSAGE_STATUS_SEEN",
              "number": 1,
              "canonical": true,
              "description": "The message has been marked seen and is not marked read or archived."
            },
            {
              "name": "MESSAGE_STATUS_READ",
              "number": 2,
              "canonical": true,
              "description": "The message has been marked read and is not archived."
            },
            {
              "name": "MESSAGE_STATUS_UNREAD",
              "number": 3,
              "canonical": true,
              "description": "Request clearing the read state; this is an update action rather than a distinct status emitted by message reads."
            },
            {
              "name": "MESSAGE_STATUS_ARCHIVED",
              "number": 4,
              "canonical": true,
              "description": "The message has been archived; this state takes precedence over seen and read when reported."
            }
          ],
          "x-enum-description": "Inbox state or requested state transition for a notification message.",
          "description": "Read, seen, or archived state recorded for the inbox message.",
          "x-presence": "explicit"
        },
        "category": {
          "type": "string",
          "description": "Category assigned to the inbox message or workflow.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "seenAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the inbox message was marked seen.",
          "x-presence": "message"
        },
        "readAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the inbox message was marked read.",
          "x-presence": "message"
        },
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_InboxMessageAction"
          },
          "description": "Interactive actions attached to the inbox message.\n\nCTA buttons",
          "x-presence": "collection"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Workflow tags for tab assignment (OR-filtered in feed).",
          "x-presence": "collection"
        },
        "archived": {
          "type": "boolean",
          "description": "Whether this inbox notification is archived.",
          "x-presence": "implicit"
        },
        "archivedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the inbox message was archived.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "InboxMessage",
        "url": "/api/models/schema-1kescd68ar#response"
      }
    },
    "notification_v1_InboxMessageAction": {
      "type": "object",
      "description": "Interactive action attached to an inbox message, including completion state.",
      "properties": {
        "actionId": {
          "type": "string",
          "description": "Identifier of an action attached to the inbox message.",
          "x-presence": "implicit"
        },
        "label": {
          "type": "string",
          "description": "Display label for the inbox action.",
          "x-presence": "implicit"
        },
        "url": {
          "type": "string",
          "description": "Destination URL opened by this inbox action.",
          "x-presence": "implicit"
        },
        "isPrimary": {
          "type": "boolean",
          "description": "Whether the inbox action is designated as the primary action.",
          "x-presence": "implicit"
        },
        "completed": {
          "type": "boolean",
          "description": "Whether the user has completed this action via CompleteInboxAction.",
          "x-presence": "implicit"
        },
        "completedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this inbox action was marked complete.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "InboxMessageAction",
        "url": "/api/models/schema-1kcu6c9rot#response"
      }
    },
    "notification_v1_services_gateway_v1_GetInboxUnseenCountRequest": {
      "type": "object",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "properties": {
        "feedIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Feed identifiers used to select inbox messages.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_GetInboxUnseenCountResponse": {
      "type": "object",
      "description": "Result payload for counting unseen inbox notifications in selected feeds.",
      "properties": {
        "unseenCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of inbox messages reported unseen, capped at 10. Check has\\_more\\_unseen before treating this count as an exact total.",
          "x-presence": "implicit"
        },
        "unreadCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of inbox messages reported unread, capped at 10. Check has\\_more\\_unread before treating this count as an exact total.",
          "x-presence": "implicit"
        },
        "hasMoreUnseen": {
          "type": "boolean",
          "description": "Whether unseen messages exceed the capped count. When true, a badge can display \"9+\".",
          "x-presence": "implicit"
        },
        "hasMoreUnread": {
          "type": "boolean",
          "description": "Whether unread messages exceed the capped count. When true, a badge can display \"9+\".",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_MarkInboxMessageAsRequest": {
      "type": "object",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "properties": {
        "messageId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the inbox message whose state is being changed.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "markAs": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "MESSAGE_STATUS_UNSEEN",
                "MESSAGE_STATUS_SEEN",
                "MESSAGE_STATUS_READ",
                "MESSAGE_STATUS_UNREAD",
                "MESSAGE_STATUS_ARCHIVED"
              ],
              "x-enumDescriptions": {
                "MESSAGE_STATUS_UNSEEN": "The message has not been marked seen or read.",
                "MESSAGE_STATUS_SEEN": "The message has been marked seen and is not marked read or archived.",
                "MESSAGE_STATUS_READ": "The message has been marked read and is not archived.",
                "MESSAGE_STATUS_UNREAD": "Request clearing the read state; this is an update action rather than a distinct status emitted by message reads.",
                "MESSAGE_STATUS_ARCHIVED": "The message has been archived; this state takes precedence over seen and read when reported."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "MESSAGE_STATUS_UNSEEN",
              "number": 0,
              "canonical": true,
              "description": "The message has not been marked seen or read."
            },
            {
              "name": "MESSAGE_STATUS_SEEN",
              "number": 1,
              "canonical": true,
              "description": "The message has been marked seen and is not marked read or archived."
            },
            {
              "name": "MESSAGE_STATUS_READ",
              "number": 2,
              "canonical": true,
              "description": "The message has been marked read and is not archived."
            },
            {
              "name": "MESSAGE_STATUS_UNREAD",
              "number": 3,
              "canonical": true,
              "description": "Request clearing the read state; this is an update action rather than a distinct status emitted by message reads."
            },
            {
              "name": "MESSAGE_STATUS_ARCHIVED",
              "number": 4,
              "canonical": true,
              "description": "The message has been archived; this state takes precedence over seen and read when reported."
            }
          ],
          "x-enum-description": "Inbox state or requested state transition for a notification message.",
          "description": "Read or seen state to apply to the selected inbox message.",
          "x-presence": "explicit"
        }
      },
      "x-request-required": [
        "messageId"
      ],
      "required": [
        "messageId"
      ]
    },
    "notification_v1_MarkInboxMessageAsResponse": {
      "type": "object",
      "description": "Result payload for changing an inbox message’s read or seen state.",
      "properties": {
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_InboxMessageSummary"
          },
          "description": "Inbox messages returned after applying the requested read or seen state change.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_InboxMessageSummary": {
      "type": "object",
      "description": "Summary of an inbox message after a mark operation.",
      "properties": {
        "messageId": {
          "type": "string",
          "description": "Identifier of the inbox message represented by this summary.",
          "x-presence": "implicit"
        },
        "channel": {
          "type": "string",
          "description": "Delivery channel reported for this inbox message.",
          "x-presence": "implicit"
        },
        "read": {
          "type": "boolean",
          "description": "Whether the inbox message has been marked read.",
          "x-presence": "implicit"
        },
        "seen": {
          "type": "boolean",
          "description": "Whether the inbox message has been marked seen.",
          "x-presence": "implicit"
        },
        "archived": {
          "type": "boolean",
          "description": "Whether this inbox message is archived.",
          "x-presence": "implicit"
        },
        "content": {
          "type": "string",
          "description": "Rendered notification content.",
          "x-presence": "implicit"
        },
        "subject": {
          "type": "string",
          "description": "Subject text for the notification message.",
          "x-presence": "implicit"
        },
        "status": {
          "type": "string",
          "description": "Status reported by the notification provider.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "description": "Time when this record was created.",
          "x-presence": "implicit"
        },
        "lastReadDate": {
          "type": "string",
          "description": "Most recent timestamp recorded for reading inbox messages.",
          "x-presence": "implicit"
        },
        "lastSeenDate": {
          "type": "string",
          "description": "Most recent timestamp recorded for seeing inbox messages.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "InboxMessageSummary",
        "url": "/api/models/schema-ojt6e86adl#response"
      }
    },
    "notification_v1_services_gateway_v1_MarkAllInboxMessagesAsRequest": {
      "type": "object",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "properties": {
        "markAs": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "MESSAGE_STATUS_UNSEEN",
                "MESSAGE_STATUS_SEEN",
                "MESSAGE_STATUS_READ",
                "MESSAGE_STATUS_UNREAD",
                "MESSAGE_STATUS_ARCHIVED"
              ],
              "x-enumDescriptions": {
                "MESSAGE_STATUS_UNSEEN": "The message has not been marked seen or read.",
                "MESSAGE_STATUS_SEEN": "The message has been marked seen and is not marked read or archived.",
                "MESSAGE_STATUS_READ": "The message has been marked read and is not archived.",
                "MESSAGE_STATUS_UNREAD": "Request clearing the read state; this is an update action rather than a distinct status emitted by message reads.",
                "MESSAGE_STATUS_ARCHIVED": "The message has been archived; this state takes precedence over seen and read when reported."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "MESSAGE_STATUS_UNSEEN",
              "number": 0,
              "canonical": true,
              "description": "The message has not been marked seen or read."
            },
            {
              "name": "MESSAGE_STATUS_SEEN",
              "number": 1,
              "canonical": true,
              "description": "The message has been marked seen and is not marked read or archived."
            },
            {
              "name": "MESSAGE_STATUS_READ",
              "number": 2,
              "canonical": true,
              "description": "The message has been marked read and is not archived."
            },
            {
              "name": "MESSAGE_STATUS_UNREAD",
              "number": 3,
              "canonical": true,
              "description": "Request clearing the read state; this is an update action rather than a distinct status emitted by message reads."
            },
            {
              "name": "MESSAGE_STATUS_ARCHIVED",
              "number": 4,
              "canonical": true,
              "description": "The message has been archived; this state takes precedence over seen and read when reported."
            }
          ],
          "x-enum-description": "Inbox state or requested state transition for a notification message.",
          "description": "Read or seen state to apply to the selected inbox messages.",
          "x-presence": "explicit"
        },
        "feedIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Feed identifiers used to select inbox messages.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_MarkAllInboxMessagesAsResponse": {
      "type": "object",
      "description": "Result payload for changing the read or seen state of selected inbox messages.",
      "properties": {
        "updatedCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of inbox messages reported updated.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_DeleteInboxMessageRequest": {
      "type": "object",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "properties": {
        "messageId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the inbox message to delete.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "messageId"
      ],
      "required": [
        "messageId"
      ]
    },
    "notification_v1_DeleteInboxMessageResponse": {
      "type": "object",
      "description": "Result payload for removing an identified message from the subscriber’s notification inbox.",
      "properties": {
        "status": {
          "description": "Status reported by the notification provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_OperationStatus"
            }
          ]
        }
      }
    },
    "notification_v1_OperationStatus": {
      "type": "object",
      "description": "Mirrors Novu's common delete/mutate acknowledgement response.",
      "properties": {
        "acknowledged": {
          "type": "boolean",
          "description": "Whether the provider acknowledged the requested operation.",
          "x-presence": "implicit"
        },
        "status": {
          "type": "string",
          "description": "Status reported by the notification provider.\n\ne.g., \"done\", \"deleted\"",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "OperationStatus",
        "url": "/api/models/schema-ok4lj6t1ka#response"
      }
    },
    "notification_v1_services_gateway_v1_ArchiveInboxMessageRequest": {
      "type": "object",
      "description": "Inputs for archiving an inbox notification. Caller user\\_id is derived from authentication headers by the gateway.",
      "properties": {
        "notificationId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification whose inbox entry is being modified.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "notificationId"
      ],
      "required": [
        "notificationId"
      ]
    },
    "notification_v1_ArchiveInboxMessageResponse": {
      "type": "object",
      "description": "Result payload for archiving one inbox notification while retaining its provider record.",
      "properties": {
        "status": {
          "description": "Status reported by the notification provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_OperationStatus"
            }
          ]
        }
      }
    },
    "notification_v1_services_gateway_v1_UnarchiveInboxMessageRequest": {
      "type": "object",
      "description": "Inputs for restoring an archived notification to the subscriber’s inbox feed.",
      "properties": {
        "notificationId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification whose inbox entry is being modified.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "notificationId"
      ],
      "required": [
        "notificationId"
      ]
    },
    "notification_v1_UnarchiveInboxMessageResponse": {
      "type": "object",
      "description": "Result payload for restoring an archived notification to the subscriber’s inbox feed.",
      "properties": {
        "status": {
          "description": "Status reported by the notification provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_OperationStatus"
            }
          ]
        }
      }
    },
    "notification_v1_services_gateway_v1_ArchiveAllInboxMessagesRequest": {
      "type": "object",
      "description": "Inputs for archiving inbox notifications selected by the supplied tag filter.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the resource for organization or filtering.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_ArchiveAllInboxMessagesResponse": {
      "type": "object",
      "description": "Result payload for archiving inbox notifications selected by the supplied tag filter.",
      "properties": {
        "archivedCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of inbox entries reported archived by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_ArchiveAllReadInboxMessagesRequest": {
      "type": "object",
      "description": "Inputs for archiving read inbox notifications selected by the supplied tag filter.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the resource for organization or filtering.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_ArchiveAllReadInboxMessagesResponse": {
      "type": "object",
      "description": "Mirrors ArchiveAllInboxMessagesResponse — same shape, distinct type so the two bulk-archive RPC contracts can evolve independently.",
      "properties": {
        "archivedCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of inbox entries reported archived by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_CompleteInboxActionRequest": {
      "type": "object",
      "description": "Inputs for marking an inbox notification’s action completed.",
      "properties": {
        "notificationId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification whose inbox entry is being modified.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "actionType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ACTION_TYPE_PRIMARY",
                "ACTION_TYPE_SECONDARY"
              ],
              "x-enumDescriptions": {
                "ACTION_TYPE_PRIMARY": "The notification's primary action button or action slot.",
                "ACTION_TYPE_SECONDARY": "The notification's secondary action button or action slot."
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "ACTION_TYPE_PRIMARY",
              "number": 0,
              "canonical": true,
              "description": "The notification's primary action button or action slot."
            },
            {
              "name": "ACTION_TYPE_SECONDARY",
              "number": 1,
              "canonical": true,
              "description": "The notification's secondary action button or action slot."
            }
          ],
          "x-enum-description": "Which configured notification action a completion or reversal refers to.",
          "description": "Action selector used when completing the inbox action.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "notificationId",
        "actionType"
      ],
      "required": [
        "notificationId",
        "actionType"
      ]
    },
    "notification_v1_CompleteInboxActionResponse": {
      "type": "object",
      "description": "Result payload for marking an inbox notification’s action completed.",
      "properties": {
        "status": {
          "description": "Status reported by the notification provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_OperationStatus"
            }
          ]
        }
      }
    },
    "notification_v1_services_gateway_v1_RevertInboxActionRequest": {
      "type": "object",
      "description": "Inputs for undoing completion of an inbox notification’s action.",
      "properties": {
        "notificationId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification whose inbox entry is being modified.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "actionType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ACTION_TYPE_PRIMARY",
                "ACTION_TYPE_SECONDARY"
              ],
              "x-enumDescriptions": {
                "ACTION_TYPE_PRIMARY": "The notification's primary action button or action slot.",
                "ACTION_TYPE_SECONDARY": "The notification's secondary action button or action slot."
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "ACTION_TYPE_PRIMARY",
              "number": 0,
              "canonical": true,
              "description": "The notification's primary action button or action slot."
            },
            {
              "name": "ACTION_TYPE_SECONDARY",
              "number": 1,
              "canonical": true,
              "description": "The notification's secondary action button or action slot."
            }
          ],
          "x-enum-description": "Which configured notification action a completion or reversal refers to.",
          "description": "Action selector used when reverting the inbox action.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "notificationId",
        "actionType"
      ],
      "required": [
        "notificationId",
        "actionType"
      ]
    },
    "notification_v1_RevertInboxActionResponse": {
      "type": "object",
      "description": "Result payload for undoing completion of an inbox notification’s action.",
      "properties": {
        "status": {
          "description": "Status reported by the notification provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_OperationStatus"
            }
          ]
        }
      }
    },
    "notification_v1_services_gateway_v1_CreateTopicRequest": {
      "type": "object",
      "description": "Inputs for creating a named notification topic with a caller-selected key.",
      "properties": {
        "topicKey": {
          "type": "string",
          "minLength": 1,
          "description": "Caller-facing key identifying a notification topic.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "name": {
          "type": "string",
          "description": "Display name assigned to the notification topic.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "topicKey"
      ],
      "required": [
        "topicKey"
      ]
    },
    "notification_v1_CreateTopicResponse": {
      "type": "object",
      "description": "Result payload for creating a named notification topic with a caller-selected key.",
      "properties": {
        "topicKey": {
          "type": "string",
          "description": "Caller-facing key identifying a notification topic.",
          "x-presence": "implicit"
        },
        "topicId": {
          "type": "string",
          "description": "Provider-assigned identifier of the notification topic.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_DeleteTopicRequest": {
      "type": "object",
      "description": "Inputs for removing an identified notification topic.",
      "properties": {
        "topicKey": {
          "type": "string",
          "minLength": 1,
          "description": "Caller-facing key identifying a notification topic.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "topicKey"
      ],
      "required": [
        "topicKey"
      ]
    },
    "notification_v1_DeleteTopicResponse": {
      "type": "object",
      "description": "Result payload for removing an identified notification topic.",
      "properties": {
        "status": {
          "description": "Status reported by the notification provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_OperationStatus"
            }
          ]
        }
      }
    },
    "notification_v1_services_gateway_v1_AddSubscribersToTopicRequest": {
      "type": "object",
      "description": "Inputs for adding selected users to a notification topic’s recipient membership.",
      "properties": {
        "topicKey": {
          "type": "string",
          "minLength": 1,
          "description": "Caller-facing key identifying a notification topic.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "userIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 100,
          "description": "Identifiers of the users selected by the operation.",
          "x-presence": "collection",
          "x-protovalidate": {
            "repeated": {
              "maxItems": "100"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "topicKey"
      ],
      "required": [
        "topicKey"
      ]
    },
    "notification_v1_AddSubscribersToTopicResponse": {
      "type": "object",
      "description": "Result payload for adding selected users to a notification topic’s recipient membership.",
      "properties": {
        "result": {
          "description": "Accepted and failed subscriber counts with per-subscriber errors from the membership change.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_TopicSubscriptionResult"
            }
          ]
        }
      }
    },
    "notification_v1_TopicSubscriptionResult": {
      "type": "object",
      "description": "Result of a topic subscription operation (add/remove subscribers). Novu returns partial success — some subscribers may fail while others succeed.",
      "properties": {
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of subscribers reported for the membership-change result.",
          "x-presence": "implicit"
        },
        "successful": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of subscribers accepted by the topic subscription operation.",
          "x-presence": "implicit"
        },
        "failed": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of subscribers rejected by the topic subscription operation.",
          "x-presence": "implicit"
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_TopicSubscriptionError"
          },
          "description": "Errors reported while processing notification requests.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "TopicSubscriptionResult",
        "url": "/api/models/schema-p2eb0gb1ln#response"
      }
    },
    "notification_v1_TopicSubscriptionError": {
      "type": "object",
      "description": "Subscriber-specific failure reported while changing notification-topic membership.",
      "properties": {
        "subscriberId": {
          "type": "string",
          "description": "Identifier of the notification subscriber.",
          "x-presence": "implicit"
        },
        "code": {
          "type": "string",
          "description": "Provider error code for the topic subscription failure.",
          "x-presence": "implicit"
        },
        "message": {
          "type": "string",
          "description": "Diagnostic or descriptive text returned by the operation.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TopicSubscriptionError",
        "url": "/api/models/schema-okmh5pnenu#response"
      }
    },
    "notification_v1_services_gateway_v1_RemoveSubscribersFromTopicRequest": {
      "type": "object",
      "description": "Inputs for removing selected users from a notification topic’s recipient membership.",
      "properties": {
        "topicKey": {
          "type": "string",
          "minLength": 1,
          "description": "Caller-facing key identifying a notification topic.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "userIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifiers of the users selected by the operation.",
          "x-presence": "collection"
        }
      },
      "x-request-required": [
        "topicKey"
      ],
      "required": [
        "topicKey"
      ]
    },
    "notification_v1_RemoveSubscribersFromTopicResponse": {
      "type": "object",
      "description": "Result payload for removing selected users from a notification topic’s recipient membership.",
      "properties": {
        "result": {
          "description": "Accepted and failed subscriber counts with per-subscriber errors from the membership change.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_TopicSubscriptionResult"
            }
          ]
        }
      }
    },
    "notification_v1_services_gateway_v1_ListTopicSubscribersRequest": {
      "type": "object",
      "description": "Inputs for paging through members of a selected notification topic.",
      "properties": {
        "topicKey": {
          "type": "string",
          "minLength": 1,
          "description": "Caller-facing key identifying a notification topic.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation.",
          "x-presence": "implicit"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "topicKey"
      ],
      "required": [
        "topicKey"
      ]
    },
    "notification_v1_ListTopicSubscribersResponse": {
      "type": "object",
      "description": "Result payload for paging through members of a selected notification topic.",
      "properties": {
        "userIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifiers of the users selected by the operation.",
          "x-presence": "collection"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of matching entries reported by the operation.",
          "x-presence": "implicit"
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether the listing reports additional entries beyond this page.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_CheckTopicSubscriptionRequest": {
      "type": "object",
      "description": "user\\_id is a query target, not the caller.",
      "properties": {
        "topicKey": {
          "type": "string",
          "minLength": 1,
          "description": "Caller-facing key identifying a notification topic.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the user associated with the operation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "topicKey",
        "userId"
      ],
      "required": [
        "topicKey",
        "userId"
      ]
    },
    "notification_v1_CheckTopicSubscriptionResponse": {
      "type": "object",
      "description": "Result payload for checking whether a user belongs to a notification topic.",
      "properties": {
        "isSubscribed": {
          "type": "boolean",
          "description": "Whether the user is subscribed to the selected topic.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_SendToTopicRequest": {
      "type": "object",
      "description": "exclude\\_user\\_id is an exclusion target, not the caller.",
      "properties": {
        "workflowId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification workflow to trigger.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "topicKey": {
          "type": "string",
          "minLength": 1,
          "description": "Caller-facing key identifying a notification topic.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "payload": {
          "type": "object",
          "additionalProperties": true,
          "description": "Template variables and event data passed to the notification workflow.",
          "x-presence": "message"
        },
        "overrides": {
          "type": "object",
          "additionalProperties": true,
          "description": "Provider-specific overrides applied to the notification trigger.",
          "x-presence": "message"
        },
        "transactionId": {
          "type": "string",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit"
        },
        "excludeUserId": {
          "type": "string",
          "description": "User identifier to omit from the topic notification’s recipients.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "workflowId",
        "topicKey"
      ],
      "required": [
        "workflowId",
        "topicKey"
      ]
    },
    "notification_v1_SendToTopicResponse": {
      "type": "object",
      "description": "Result payload for triggering a notification workflow for the subscribers of a topic.",
      "properties": {
        "acknowledged": {
          "type": "boolean",
          "description": "Whether the notification provider acknowledged the trigger.",
          "x-presence": "implicit"
        },
        "status": {
          "type": "string",
          "description": "Status reported by the notification provider.",
          "x-presence": "implicit"
        },
        "transactionId": {
          "type": "string",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit"
        },
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Errors reported while processing notification requests.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_services_gateway_v1_SendWithDigestRequest": {
      "type": "object",
      "description": "Inputs for dispatching a notification with digest handling. user\\_id identifies the recipient, not the caller.",
      "properties": {
        "workflowId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification workflow to trigger.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification’s intended recipient.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "payload": {
          "type": "object",
          "additionalProperties": true,
          "description": "Template variables and event data passed to the notification workflow.",
          "x-presence": "message"
        },
        "overrides": {
          "type": "object",
          "additionalProperties": true,
          "description": "Provider-specific overrides applied to the notification trigger.",
          "x-presence": "message"
        },
        "transactionId": {
          "type": "string",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "workflowId",
        "userId"
      ],
      "required": [
        "workflowId",
        "userId"
      ]
    },
    "notification_v1_SendWithDigestResponse": {
      "type": "object",
      "description": "Result payload for submitting a notification event for digest processing.",
      "properties": {
        "acknowledged": {
          "type": "boolean",
          "description": "Whether the notification provider acknowledged the trigger.",
          "x-presence": "implicit"
        },
        "status": {
          "type": "string",
          "description": "Status reported by the notification provider.",
          "x-presence": "implicit"
        },
        "transactionId": {
          "type": "string",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit"
        },
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Errors reported while processing notification requests.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_services_gateway_v1_CancelDigestEventRequest": {
      "type": "object",
      "description": "Inputs for cancelling a queued notification digest event.",
      "properties": {
        "transactionId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "transactionId"
      ],
      "required": [
        "transactionId"
      ]
    },
    "notification_v1_CancelDigestEventResponse": {
      "type": "object",
      "description": "Result payload for cancelling a queued notification digest event.",
      "properties": {
        "cancelled": {
          "type": "boolean",
          "description": "Whether the notification cancellation was acknowledged.",
          "x-presence": "implicit"
        },
        "message": {
          "type": "string",
          "description": "Diagnostic or descriptive text returned by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_GetPreferencesRequest": {
      "type": "object",
      "description": "Request for the caller’s hierarchical notification preferences. Caller user\\_id is derived from authentication headers by the gateway.",
      "properties": {}
    },
    "notification_v1_GetPreferencesResponse": {
      "type": "object",
      "description": "Result payload for reading global and workflow-specific channel preferences for a subscriber.",
      "properties": {
        "global": {
          "description": "Subscriber preferences that apply across notification workflows.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_GlobalPreferences"
            }
          ]
        },
        "workflows": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_WorkflowPreferences"
          },
          "description": "Subscriber channel preferences for individual notification workflows.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_GlobalPreferences": {
      "type": "object",
      "description": "Subscriber's global (all-workflow) notification preferences.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Master switch — false disables all non-critical notifications.",
          "x-presence": "implicit"
        },
        "channels": {
          "description": "Channel switches recorded for these subscriber preferences.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_ChannelToggles"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "GlobalPreferences",
        "url": "/api/models/schema-p20l2ff92r#response"
      }
    },
    "notification_v1_ChannelToggles": {
      "type": "object",
      "description": "Per-channel notification toggles. All fields are optional so callers can patch only the channels they want to change; omitted fields remain unchanged.",
      "properties": {
        "inApp": {
          "type": "boolean",
          "description": "Whether in-app notification delivery is enabled.",
          "x-presence": "explicit"
        },
        "push": {
          "type": "boolean",
          "description": "Whether push notification delivery is enabled.",
          "x-presence": "explicit"
        },
        "email": {
          "type": "boolean",
          "description": "Whether email notification delivery is enabled.",
          "x-presence": "explicit"
        },
        "sms": {
          "type": "boolean",
          "description": "Whether SMS notification delivery is enabled.",
          "x-presence": "explicit"
        },
        "chat": {
          "type": "boolean",
          "description": "Whether chat notification delivery is enabled.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "ChannelToggles",
        "url": "/api/models/schema-oj4cvo85fs#response"
      }
    },
    "notification_v1_WorkflowPreferences": {
      "type": "object",
      "description": "Per-workflow notification channel preferences for a subscriber.",
      "properties": {
        "workflowId": {
          "type": "string",
          "description": "Novu workflow identifier (slug).",
          "x-presence": "implicit"
        },
        "workflowName": {
          "type": "string",
          "description": "Human-readable display name.",
          "x-presence": "implicit"
        },
        "critical": {
          "type": "boolean",
          "description": "If true, subscriber cannot opt out (admin-enforced).",
          "x-presence": "implicit"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Workflow tags for grouping in settings UI.",
          "x-presence": "collection"
        },
        "channels": {
          "description": "Channel switches recorded for these subscriber preferences.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_ChannelToggles"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "WorkflowPreferences",
        "url": "/api/models/schema-p2jctrvcjc#response"
      }
    },
    "notification_v1_services_gateway_v1_UpdateGlobalPreferenceRequest": {
      "type": "object",
      "description": "Inputs for changing the subscriber’s channel preferences across notification workflows.",
      "properties": {
        "channels": {
          "description": "Channel switches to update for the subscriber.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_ChannelTogglesInput"
            }
          ]
        }
      }
    },
    "notification_v1_ChannelTogglesInput": {
      "type": "object",
      "description": "Per-channel notification toggles. All fields are optional so callers can patch only the channels they want to change; omitted fields remain unchanged.",
      "properties": {
        "inApp": {
          "type": "boolean",
          "description": "Whether in-app notification delivery is enabled.",
          "x-presence": "explicit"
        },
        "push": {
          "type": "boolean",
          "description": "Whether push notification delivery is enabled.",
          "x-presence": "explicit"
        },
        "email": {
          "type": "boolean",
          "description": "Whether email notification delivery is enabled.",
          "x-presence": "explicit"
        },
        "sms": {
          "type": "boolean",
          "description": "Whether SMS notification delivery is enabled.",
          "x-presence": "explicit"
        },
        "chat": {
          "type": "boolean",
          "description": "Whether chat notification delivery is enabled.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "ChannelToggles",
        "url": "/api/models/schema-oj4cvo85fs#request"
      }
    },
    "google_protobuf_Empty": {
      "type": "object",
      "properties": {},
      "description": "An empty JSON object."
    },
    "notification_v1_services_gateway_v1_UpdateWorkflowPreferenceRequestRequest": {
      "type": "object",
      "description": "Inputs for changing the subscriber’s channel preferences for one notification workflow.",
      "properties": {
        "workflowId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification workflow whose subscriber preferences are being changed.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "channels": {
          "description": "Channel switches to update for the subscriber.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_ChannelTogglesInput"
            }
          ]
        }
      },
      "x-request-required": [
        "workflowId"
      ],
      "required": [
        "workflowId"
      ]
    },
    "notification_v1_services_gateway_v1_BulkUpdatePreferencesRequest": {
      "type": "object",
      "description": "Inputs for applying channel-preference changes across selected notification workflows.",
      "properties": {
        "entries": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_services_gateway_v1_UpdateWorkflowPreferenceRequest"
          },
          "maxItems": 100,
          "description": "Workflow-specific preference updates submitted together.",
          "x-presence": "collection",
          "x-protovalidate": {
            "repeated": {
              "maxItems": "100"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "notification_v1_services_gateway_v1_UpdateWorkflowPreferenceRequest": {
      "type": "object",
      "description": "Inputs for changing the subscriber’s channel preferences for one notification workflow.",
      "properties": {
        "workflowId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification workflow whose subscriber preferences are being changed.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "channels": {
          "description": "Channel switches to update for the subscriber.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_ChannelTogglesInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "UpdateWorkflowPreferenceRequest",
        "url": "/api/models/schema-p38aqgjs3a#request"
      },
      "x-request-required": [
        "workflowId"
      ],
      "required": [
        "workflowId"
      ]
    },
    "notification_v1_BulkUpdatePreferencesResponse": {
      "type": "object",
      "description": "Result payload for applying channel-preference changes across selected notification workflows.",
      "properties": {
        "updatedCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of preference entries reported updated.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_UpdateSubscriberDataRequest": {
      "type": "object",
      "description": "Inputs for updating notification subscriber data. Caller user\\_id is derived from authentication headers by the gateway.",
      "properties": {
        "data": {
          "description": "Contact, locale, and custom subscriber attributes to update.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_SubscriberDataInput"
            }
          ],
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "data"
      ],
      "required": [
        "data"
      ]
    },
    "notification_v1_SubscriberDataInput": {
      "type": "object",
      "description": "Contact, locale, and custom attributes used by notification delivery.",
      "properties": {
        "firstName": {
          "type": "string",
          "description": "Subscriber’s given name.",
          "x-presence": "implicit"
        },
        "lastName": {
          "type": "string",
          "description": "Subscriber’s family name.",
          "x-presence": "implicit"
        },
        "email": {
          "type": "string",
          "description": "Email address used for subscriber contact and delivery.",
          "x-presence": "implicit"
        },
        "phone": {
          "type": "string",
          "description": "Phone number used for subscriber contact and delivery.",
          "x-presence": "implicit"
        },
        "avatarUrl": {
          "type": "string",
          "description": "URL of the subscriber’s avatar image.",
          "x-presence": "implicit"
        },
        "locale": {
          "type": "string",
          "description": "Subscriber locale used when rendering notifications.\n\ne.g., \"en-US\"",
          "x-presence": "implicit"
        },
        "timezone": {
          "type": "string",
          "description": "Subscriber time zone used for notification presentation.\n\ne.g., \"America/Los\\_Angeles\"",
          "x-presence": "implicit"
        },
        "customData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional template variables.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "SubscriberData",
        "url": "/api/models/schema-1kgdnn5p53#request"
      }
    },
    "notification_v1_UpdateSubscriberDataResponse": {
      "type": "object",
      "description": "Result payload for changing contact, locale, or custom attributes used for notification delivery.",
      "properties": {
        "data": {
          "description": "Contact, locale, and custom attributes returned for the subscriber.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_SubscriberData"
            }
          ]
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        }
      }
    },
    "notification_v1_SubscriberData": {
      "type": "object",
      "description": "Contact, locale, and custom attributes used by notification delivery.",
      "properties": {
        "firstName": {
          "type": "string",
          "description": "Subscriber’s given name.",
          "x-presence": "implicit"
        },
        "lastName": {
          "type": "string",
          "description": "Subscriber’s family name.",
          "x-presence": "implicit"
        },
        "email": {
          "type": "string",
          "description": "Email address used for subscriber contact and delivery.",
          "x-presence": "implicit"
        },
        "phone": {
          "type": "string",
          "description": "Phone number used for subscriber contact and delivery.",
          "x-presence": "implicit"
        },
        "avatarUrl": {
          "type": "string",
          "description": "URL of the subscriber’s avatar image.",
          "x-presence": "implicit"
        },
        "locale": {
          "type": "string",
          "description": "Subscriber locale used when rendering notifications.\n\ne.g., \"en-US\"",
          "x-presence": "implicit"
        },
        "timezone": {
          "type": "string",
          "description": "Subscriber time zone used for notification presentation.\n\ne.g., \"America/Los\\_Angeles\"",
          "x-presence": "implicit"
        },
        "customData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional template variables.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "SubscriberData",
        "url": "/api/models/schema-1kgdnn5p53#response"
      }
    },
    "notification_v1_services_gateway_v1_GetSubscriberRequest": {
      "type": "object",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "properties": {}
    },
    "notification_v1_GetSubscriberResponse": {
      "type": "object",
      "description": "Result payload for retrieving a notification subscriber’s contact and custom attributes.",
      "properties": {
        "subscriberId": {
          "type": "string",
          "description": "Identifier of the notification subscriber.",
          "x-presence": "implicit"
        },
        "data": {
          "description": "Contact, locale, and custom attributes returned for the subscriber.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_SubscriberData"
            }
          ]
        },
        "channels": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_ChannelRegistration"
          },
          "description": "Registration status and credential counts for the subscriber’s delivery channels.",
          "x-presence": "collection"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        },
        "globalPreferences": {
          "description": "Subscriber preferences that apply across notification workflows.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_GlobalPreferences"
            }
          ]
        },
        "workflowPreferences": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_WorkflowPreferences"
          },
          "description": "Subscriber preferences scoped to individual notification workflows.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_services_gateway_v1_DeleteSubscriberRequest": {
      "type": "object",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "properties": {}
    },
    "notification_v1_DeleteSubscriberResponse": {
      "type": "object",
      "description": "Result payload for removing the subscriber’s notification-provider record.",
      "properties": {
        "status": {
          "description": "Status reported by the notification provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/notification_v1_OperationStatus"
            }
          ]
        }
      }
    },
    "notification_v1_services_gateway_v1_CreateSubscriberRequest": {
      "type": "object",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "properties": {
        "subscriberId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the notification subscriber.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "email": {
          "type": "string",
          "description": "Email address used for subscriber contact and delivery.",
          "x-presence": "implicit"
        },
        "phone": {
          "type": "string",
          "description": "Phone number used for subscriber contact and delivery.",
          "x-presence": "implicit"
        },
        "firstName": {
          "type": "string",
          "description": "Subscriber’s given name.",
          "x-presence": "implicit"
        },
        "lastName": {
          "type": "string",
          "description": "Subscriber’s family name.",
          "x-presence": "implicit"
        },
        "avatarUrl": {
          "type": "string",
          "description": "URL of the subscriber’s avatar image.",
          "x-presence": "implicit"
        },
        "locale": {
          "type": "string",
          "description": "Subscriber locale used when rendering notifications.",
          "x-presence": "implicit"
        },
        "data": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom key-value attributes to attach to the new subscriber.",
          "x-presence": "collection"
        }
      },
      "x-request-required": [
        "subscriberId"
      ],
      "required": [
        "subscriberId"
      ]
    },
    "notification_v1_CreateSubscriberResponse": {
      "type": "object",
      "description": "Result payload for creating a notification subscriber with contact and locale attributes.",
      "properties": {
        "novuSubscriberId": {
          "type": "string",
          "description": "Subscriber identifier returned by Novu.",
          "x-presence": "implicit"
        },
        "subscriberId": {
          "type": "string",
          "description": "Identifier of the notification subscriber.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_ListSubscribersRequest": {
      "type": "object",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "properties": {
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation.",
          "x-presence": "implicit"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "notification_v1_ListSubscribersResponse": {
      "type": "object",
      "description": "Result payload for paging through notification subscribers and their presence summaries.",
      "properties": {
        "subscribers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_SubscriberSummary"
          },
          "description": "Subscriber records returned by the listing.",
          "x-presence": "collection"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of matching entries reported by the operation.",
          "x-presence": "implicit"
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether the listing reports additional entries beyond this page.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_SubscriberSummary": {
      "type": "object",
      "description": "Contact and presence information returned in a subscriber listing.",
      "properties": {
        "subscriberId": {
          "type": "string",
          "description": "Identifier of the notification subscriber.",
          "x-presence": "implicit"
        },
        "email": {
          "type": "string",
          "description": "Email address used for subscriber contact and delivery.",
          "x-presence": "implicit"
        },
        "firstName": {
          "type": "string",
          "description": "Subscriber’s given name.",
          "x-presence": "implicit"
        },
        "lastName": {
          "type": "string",
          "description": "Subscriber’s family name.",
          "x-presence": "implicit"
        },
        "isOnline": {
          "type": "boolean",
          "description": "Whether the provider reports the subscriber currently online.",
          "x-presence": "implicit"
        },
        "lastOnlineAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the provider last observed the subscriber online.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "SubscriberSummary",
        "url": "/api/models/schema-okk1bp39s4#response"
      }
    },
    "notification_v1_services_gateway_v1_GetDeliveryStatusRequest": {
      "type": "object",
      "description": "Inputs for reading provider activity for a notification transaction.",
      "properties": {
        "transactionId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "transactionId"
      ],
      "required": [
        "transactionId"
      ]
    },
    "notification_v1_GetDeliveryStatusResponse": {
      "type": "object",
      "description": "Result payload for reading provider activity for a notification transaction.",
      "properties": {
        "activity": {
          "type": "object",
          "additionalProperties": true,
          "description": "Notification activity entries returned by the provider.",
          "x-presence": "message"
        }
      }
    },
    "notification_v1_services_gateway_v1_GetNotificationActivityRequest": {
      "type": "object",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "properties": {
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation.",
          "x-presence": "implicit"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "channels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provider delivery-channel names used to restrict the query, such as \"in\\_app\" and \"push\". These are provider strings, not CHANNEL\\_\\* enum names.",
          "x-presence": "collection"
        },
        "from": {
          "type": "string",
          "format": "date-time",
          "description": "Lower time bound for the notification activity query.",
          "x-presence": "message"
        },
        "to": {
          "type": "string",
          "format": "date-time",
          "description": "Upper time bound for the notification activity query.",
          "x-presence": "message"
        },
        "subscriberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "When supplied, restrict notification activity to these subscriber identifiers.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_GetNotificationActivityResponse": {
      "type": "object",
      "description": "Result payload for querying delivery activity for a user across a selected time range.",
      "properties": {
        "entries": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          },
          "description": "Notification delivery activity entries returned for the selected query.",
          "x-presence": "collection"
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether the listing reports additional entries beyond this page.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_ConfigureProviderRequest": {
      "type": "object",
      "description": "Inputs for configuring a notification delivery provider. Tenant and environment are derived from authentication headers by the gateway.",
      "properties": {
        "provider": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "PROVIDER_TYPE_FCM",
                "PROVIDER_TYPE_APNS",
                "PROVIDER_TYPE_SENDGRID",
                "PROVIDER_TYPE_SES",
                "PROVIDER_TYPE_TWILIO",
                "PROVIDER_TYPE_SLACK",
                "PROVIDER_TYPE_DISCORD"
              ],
              "x-enumDescriptions": {
                "PROVIDER_TYPE_FCM": "Firebase Cloud Messaging for device or web push delivery.\n\nFirebase Cloud Messaging (push)",
                "PROVIDER_TYPE_APNS": "Apple Push Notification service for Apple-device push delivery.\n\nApple Push Notification Service",
                "PROVIDER_TYPE_SENDGRID": "SendGrid for email delivery.\n\nSendGrid (email)",
                "PROVIDER_TYPE_SES": "Amazon Simple Email Service for email delivery.\n\nAWS SES (email)",
                "PROVIDER_TYPE_TWILIO": "Twilio for SMS delivery.\n\nTwilio (SMS)",
                "PROVIDER_TYPE_SLACK": "Slack for chat-message delivery.\n\nSlack (chat)",
                "PROVIDER_TYPE_DISCORD": "Discord for chat-message delivery.\n\nDiscord (chat)"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "PROVIDER_TYPE_FCM",
              "number": 0,
              "canonical": true,
              "description": "Firebase Cloud Messaging for device or web push delivery.\n\nFirebase Cloud Messaging (push)"
            },
            {
              "name": "PROVIDER_TYPE_APNS",
              "number": 1,
              "canonical": true,
              "description": "Apple Push Notification service for Apple-device push delivery.\n\nApple Push Notification Service"
            },
            {
              "name": "PROVIDER_TYPE_SENDGRID",
              "number": 2,
              "canonical": true,
              "description": "SendGrid for email delivery.\n\nSendGrid (email)"
            },
            {
              "name": "PROVIDER_TYPE_SES",
              "number": 3,
              "canonical": true,
              "description": "Amazon Simple Email Service for email delivery.\n\nAWS SES (email)"
            },
            {
              "name": "PROVIDER_TYPE_TWILIO",
              "number": 4,
              "canonical": true,
              "description": "Twilio for SMS delivery.\n\nTwilio (SMS)"
            },
            {
              "name": "PROVIDER_TYPE_SLACK",
              "number": 5,
              "canonical": true,
              "description": "Slack for chat-message delivery.\n\nSlack (chat)"
            },
            {
              "name": "PROVIDER_TYPE_DISCORD",
              "number": 6,
              "canonical": true,
              "description": "Discord for chat-message delivery.\n\nDiscord (chat)"
            }
          ],
          "x-enum-description": "Service used to deliver a notification through its selected channel.",
          "description": "Notification delivery provider being configured or reported.",
          "x-presence": "explicit"
        },
        "credentials": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Provider-specific credentials supplied when configuring delivery.",
          "x-presence": "collection"
        },
        "active": {
          "type": "boolean",
          "description": "Whether the resource is marked active.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_ConfigureProviderResponse": {
      "type": "object",
      "description": "Result payload for configuring credentials and activation for a notification delivery provider.",
      "properties": {
        "integrationId": {
          "type": "string",
          "description": "Identifier of the provider integration in Novu.",
          "x-presence": "implicit"
        },
        "active": {
          "type": "boolean",
          "description": "Whether the resource is marked active.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_GetProvidersRequest": {
      "type": "object",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "properties": {}
    },
    "notification_v1_GetProvidersResponse": {
      "type": "object",
      "description": "Result payload for reading the configured notification delivery providers.",
      "properties": {
        "providers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_ProviderInfo"
          },
          "description": "Configured notification delivery providers.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_ProviderInfo": {
      "type": "object",
      "description": "Configured notification provider and its integration identifier and active state.",
      "properties": {
        "provider": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "PROVIDER_TYPE_FCM",
                "PROVIDER_TYPE_APNS",
                "PROVIDER_TYPE_SENDGRID",
                "PROVIDER_TYPE_SES",
                "PROVIDER_TYPE_TWILIO",
                "PROVIDER_TYPE_SLACK",
                "PROVIDER_TYPE_DISCORD"
              ],
              "x-enumDescriptions": {
                "PROVIDER_TYPE_FCM": "Firebase Cloud Messaging for device or web push delivery.\n\nFirebase Cloud Messaging (push)",
                "PROVIDER_TYPE_APNS": "Apple Push Notification service for Apple-device push delivery.\n\nApple Push Notification Service",
                "PROVIDER_TYPE_SENDGRID": "SendGrid for email delivery.\n\nSendGrid (email)",
                "PROVIDER_TYPE_SES": "Amazon Simple Email Service for email delivery.\n\nAWS SES (email)",
                "PROVIDER_TYPE_TWILIO": "Twilio for SMS delivery.\n\nTwilio (SMS)",
                "PROVIDER_TYPE_SLACK": "Slack for chat-message delivery.\n\nSlack (chat)",
                "PROVIDER_TYPE_DISCORD": "Discord for chat-message delivery.\n\nDiscord (chat)"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "PROVIDER_TYPE_FCM",
              "number": 0,
              "canonical": true,
              "description": "Firebase Cloud Messaging for device or web push delivery.\n\nFirebase Cloud Messaging (push)"
            },
            {
              "name": "PROVIDER_TYPE_APNS",
              "number": 1,
              "canonical": true,
              "description": "Apple Push Notification service for Apple-device push delivery.\n\nApple Push Notification Service"
            },
            {
              "name": "PROVIDER_TYPE_SENDGRID",
              "number": 2,
              "canonical": true,
              "description": "SendGrid for email delivery.\n\nSendGrid (email)"
            },
            {
              "name": "PROVIDER_TYPE_SES",
              "number": 3,
              "canonical": true,
              "description": "Amazon Simple Email Service for email delivery.\n\nAWS SES (email)"
            },
            {
              "name": "PROVIDER_TYPE_TWILIO",
              "number": 4,
              "canonical": true,
              "description": "Twilio for SMS delivery.\n\nTwilio (SMS)"
            },
            {
              "name": "PROVIDER_TYPE_SLACK",
              "number": 5,
              "canonical": true,
              "description": "Slack for chat-message delivery.\n\nSlack (chat)"
            },
            {
              "name": "PROVIDER_TYPE_DISCORD",
              "number": 6,
              "canonical": true,
              "description": "Discord for chat-message delivery.\n\nDiscord (chat)"
            }
          ],
          "x-enum-description": "Service used to deliver a notification through its selected channel.",
          "description": "Notification delivery provider being configured or reported.",
          "x-presence": "explicit"
        },
        "integrationId": {
          "type": "string",
          "description": "Identifier of the provider integration in Novu.",
          "x-presence": "implicit"
        },
        "active": {
          "type": "boolean",
          "description": "Whether the resource is marked active.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ProviderInfo",
        "url": "/api/models/schema-p28bvfiqrb#response"
      }
    },
    "notification_v1_services_gateway_v1_CreateWorkflowRequest": {
      "type": "object",
      "description": "Inputs for creating a notification workflow. Tenant and environment are derived from authentication headers by the gateway.",
      "properties": {
        "workflow": {
          "type": "object",
          "additionalProperties": true,
          "description": "Notification workflow definition to create.",
          "x-presence": "message"
        }
      }
    },
    "notification_v1_CreateWorkflowResponse": {
      "type": "object",
      "description": "Result payload for registering a notification workflow definition with the provider.",
      "properties": {
        "workflow": {
          "type": "object",
          "additionalProperties": true,
          "description": "Notification workflow definition supplied to or returned by the provider.",
          "x-presence": "message"
        }
      }
    },
    "notification_v1_services_gateway_v1_UpdateWorkflowRequest": {
      "type": "object",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "properties": {
        "workflowId": {
          "type": "string",
          "description": "Identifier of the notification workflow to update.",
          "x-presence": "implicit"
        },
        "workflow": {
          "type": "object",
          "additionalProperties": true,
          "description": "Notification workflow definition supplied to or returned by the provider.",
          "x-presence": "message"
        }
      }
    },
    "notification_v1_UpdateWorkflowResponse": {
      "type": "object",
      "description": "Result payload for changing a registered notification workflow definition.",
      "properties": {
        "workflow": {
          "type": "object",
          "additionalProperties": true,
          "description": "Notification workflow definition supplied to or returned by the provider.",
          "x-presence": "message"
        }
      }
    },
    "notification_v1_services_gateway_v1_GetWorkflowRequest": {
      "type": "object",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "properties": {
        "workflowId": {
          "type": "string",
          "description": "Identifier of the notification workflow to retrieve.",
          "x-presence": "implicit"
        },
        "triggerIdentifier": {
          "type": "string",
          "description": "Trigger identifier used to address a notification workflow.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_GetWorkflowResponse": {
      "type": "object",
      "description": "Result payload for retrieving a notification workflow by identifier or trigger name.",
      "properties": {
        "workflow": {
          "type": "object",
          "additionalProperties": true,
          "description": "Notification workflow definition supplied to or returned by the provider.",
          "x-presence": "message"
        }
      }
    },
    "notification_v1_services_gateway_v1_ListWorkflowsRequest": {
      "type": "object",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "properties": {
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation.",
          "x-presence": "implicit"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "notification_v1_ListWorkflowsResponse": {
      "type": "object",
      "description": "Result payload for paging through available notification workflow definitions.",
      "properties": {
        "workflows": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          },
          "description": "Notification workflow definitions returned by the listing.",
          "x-presence": "collection"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of matching entries reported by the operation.",
          "x-presence": "implicit"
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether the listing reports additional entries beyond this page.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_DeleteWorkflowRequest": {
      "type": "object",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "properties": {
        "workflowId": {
          "type": "string",
          "description": "Identifier of the notification workflow selected for deletion.",
          "x-presence": "implicit"
        },
        "triggerIdentifier": {
          "type": "string",
          "description": "Trigger identifier used to address a notification workflow.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_DeleteWorkflowResponse": {
      "type": "object",
      "description": "Result payload for removing an identified notification workflow definition.",
      "properties": {
        "workflowId": {
          "type": "string",
          "description": "Identifier of the notification workflow selected for deletion.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_GetPendingChangesRequest": {
      "type": "object",
      "description": "Request for pending notification configuration changes. Tenant identity is derived from authentication headers by the gateway.",
      "properties": {}
    },
    "notification_v1_GetPendingChangesResponse": {
      "type": "object",
      "description": "Result payload for listing notification configuration changes awaiting promotion.",
      "properties": {
        "changes": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_PendingChange"
          },
          "description": "Pending notification configuration changes returned by the provider.",
          "x-presence": "collection"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of matching entries reported by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_PendingChange": {
      "type": "object",
      "description": "Notification configuration change awaiting promotion to another provider environment.",
      "properties": {
        "changeId": {
          "type": "string",
          "description": "Identifier of a pending notification configuration change.",
          "x-presence": "implicit"
        },
        "type": {
          "type": "string",
          "description": "Kind of notification resource affected by the pending configuration change.\n\n\"NotificationTemplate\", \"MessageTemplate\", etc.",
          "x-presence": "implicit"
        },
        "entityName": {
          "type": "string",
          "description": "Name of the notification resource affected by the pending change.",
          "x-presence": "implicit"
        },
        "entityId": {
          "type": "string",
          "description": "Identifier of the notification resource affected by the pending change.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "createdBy": {
          "type": "string",
          "description": "Identifier of the actor that created the pending change.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PendingChange",
        "url": "/api/models/schema-ok6l245g8f#response"
      }
    },
    "notification_v1_services_gateway_v1_PromoteChangeRequest": {
      "type": "object",
      "description": "tenant\\_id derived from auth headers by gateway.",
      "properties": {
        "changeId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of a pending notification configuration change.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "changeId"
      ],
      "required": [
        "changeId"
      ]
    },
    "notification_v1_PromoteChangeResponse": {
      "type": "object",
      "description": "Result payload for promoting a notification configuration change between provider environments.",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Whether the operation reports a successful result.",
          "x-presence": "implicit"
        },
        "productionEntityId": {
          "type": "string",
          "description": "Identifier assigned to the promoted resource in the target environment.",
          "x-presence": "implicit"
        }
      }
    },
    "notification_v1_services_gateway_v1_PromoteAllChangesRequest": {
      "type": "object",
      "description": "tenant\\_id derived from auth headers by gateway.",
      "properties": {
        "changeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifiers of notification configuration changes selected for promotion.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_PromoteAllChangesResponse": {
      "type": "object",
      "description": "Result payload for promoting selected notification configuration changes between provider environments.",
      "properties": {
        "promotedCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of configuration changes reported promoted.",
          "x-presence": "implicit"
        },
        "promotedIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifiers of configuration changes reported promoted.",
          "x-presence": "collection"
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/notification_v1_PromotionError"
          },
          "description": "Errors reported while processing notification requests.",
          "x-presence": "collection"
        }
      }
    },
    "notification_v1_PromotionError": {
      "type": "object",
      "description": "Failure associated with promotion of one notification configuration change.",
      "properties": {
        "changeId": {
          "type": "string",
          "description": "Identifier of a pending notification configuration change.",
          "x-presence": "implicit"
        },
        "error": {
          "type": "string",
          "description": "Error information reported for this operation or item.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PromotionError",
        "url": "/api/models/schema-okaelqap4k#response"
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamCreateConnectTokenRequest": {
      "type": "object",
      "description": "Inputs for issuing a token and hosted link for connecting an end-user account.",
      "properties": {
        "state": {
          "type": "string",
          "description": "Optional opaque state to round-trip in redirect",
          "x-presence": "implicit"
        },
        "redirectUri": {
          "type": "string",
          "description": "Optional universal redirect (success) URI override",
          "x-presence": "implicit"
        },
        "allowedOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CORS allowed origins for hosted Connect (iframe)",
          "x-presence": "collection"
        },
        "successRedirectUrl": {
          "type": "string",
          "description": "Optional explicit success/error redirects",
          "x-presence": "implicit"
        },
        "errorRedirectUrl": {
          "type": "string",
          "description": "URL to which the account-connection flow redirects on error.",
          "x-presence": "implicit"
        },
        "webhookUrl": {
          "type": "string",
          "description": "Optional webhook for Connect notifications",
          "x-presence": "implicit"
        },
        "appSlug": {
          "type": "string",
          "description": "App slug the end user should connect (e.g. \"github\", \"strava\").\n\nPipedream's hosted Connect page rejects the link its API returns unless an `app` query parameter is present. Forwarded to PipedreamService.CreateConnectToken, which builds a link that works as-is.",
          "x-presence": "implicit"
        }
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamCreateConnectTokenResponse": {
      "type": "object",
      "description": "Result payload for issuing a token and hosted link for connecting an end-user account.",
      "properties": {
        "token": {
          "type": "string",
          "description": "Short-lived Pipedream Connect token returned by the provider.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "connectLinkUrl": {
          "type": "string",
          "description": "Pipedream Connect URL used to authorize an account connection.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the credential or resource expires.",
          "x-presence": "message"
        }
      },
      "x-request-required": [
        "token",
        "connectLinkUrl"
      ]
    },
    "integrations_v1_services_gateway_v1_PipedreamListAppsRequest": {
      "type": "object",
      "description": "Inputs for searching the Pipedream app catalog with pagination and sorting.",
      "properties": {
        "after": {
          "type": "string",
          "description": "Cursor selecting entries after the specified position in the provider listing.",
          "x-presence": "implicit"
        },
        "before": {
          "type": "string",
          "description": "Cursor selecting entries before the specified position in the provider listing.",
          "x-presence": "implicit"
        },
        "limit": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of entries requested from the listing.",
          "x-presence": "implicit"
        },
        "q": {
          "type": "string",
          "description": "Free-text search over app names in the integration catalog.",
          "x-presence": "implicit"
        },
        "categoryIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integration app category identifiers used to restrict the listing.",
          "x-presence": "collection"
        },
        "sortKey": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "APP_SORT_KEY_NAME",
                "APP_SORT_KEY_NAME_SLUG",
                "APP_SORT_KEY_FEATURED_WEIGHT"
              ],
              "x-enumDescriptions": {
                "APP_SORT_KEY_NAME": "Sort by the app's display name.\n\n\"name\"",
                "APP_SORT_KEY_NAME_SLUG": "Sort by the app's stable name slug.\n\n\"name\\_slug\"",
                "APP_SORT_KEY_FEATURED_WEIGHT": "Sort by the catalog's featured-app ranking weight.\n\n\"featured\\_weight\""
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "APP_SORT_KEY_NAME",
              "number": 0,
              "canonical": true,
              "description": "Sort by the app's display name.\n\n\"name\""
            },
            {
              "name": "APP_SORT_KEY_NAME_SLUG",
              "number": 1,
              "canonical": true,
              "description": "Sort by the app's stable name slug.\n\n\"name\\_slug\""
            },
            {
              "name": "APP_SORT_KEY_FEATURED_WEIGHT",
              "number": 2,
              "canonical": true,
              "description": "Sort by the catalog's featured-app ranking weight.\n\n\"featured\\_weight\""
            }
          ],
          "x-enum-description": "Integration-app catalog property used to order list results.",
          "description": "Provider field used to order catalog results.",
          "x-presence": "explicit"
        },
        "sortDirection": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "SORT_DIRECTION_ASC",
                "SORT_DIRECTION_DESC"
              ],
              "x-enumDescriptions": {
                "SORT_DIRECTION_ASC": "Order results from lower to higher values of the selected sort key.\n\n\"asc\"",
                "SORT_DIRECTION_DESC": "Order results from higher to lower values of the selected sort key.\n\n\"desc\""
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "SORT_DIRECTION_ASC",
              "number": 0,
              "canonical": true,
              "description": "Order results from lower to higher values of the selected sort key.\n\n\"asc\""
            },
            {
              "name": "SORT_DIRECTION_DESC",
              "number": 1,
              "canonical": true,
              "description": "Order results from higher to lower values of the selected sort key.\n\n\"desc\""
            }
          ],
          "x-enum-description": "Direction applied to the selected integration-app sort key.",
          "description": "Direction in which the provider should order catalog results.",
          "x-presence": "explicit"
        }
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamListAppsResponse": {
      "type": "object",
      "description": "Result payload for searching the Pipedream app catalog with pagination and sorting.",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/integrations_v1_services_pipedream_v1_App"
          },
          "description": "Pipedream app catalog entries returned for this page.",
          "x-presence": "collection"
        },
        "pageInfo": {
          "description": "Cursor and count information returned with the provider listing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_pipedream_v1_PageInfo"
            }
          ]
        }
      }
    },
    "integrations_v1_services_pipedream_v1_App": {
      "type": "object",
      "description": "App metadata",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the app record.",
          "x-presence": "implicit"
        },
        "nameSlug": {
          "type": "string",
          "description": "Unique slug identifier (e.g., \"slack\", \"github\").",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name of the integration app in the Pipedream catalog.",
          "x-presence": "implicit"
        },
        "authType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "AUTH_TYPE_KEYS",
                "AUTH_TYPE_OAUTH",
                "AUTH_TYPE_NONE"
              ],
              "x-enumDescriptions": {
                "AUTH_TYPE_KEYS": "The app uses API-key credentials.\n\nAPI keys",
                "AUTH_TYPE_OAUTH": "The app uses an OAuth authorization flow.\n\nOAuth 2.0",
                "AUTH_TYPE_NONE": "The app does not require authentication credentials.\n\nNo auth required"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "AUTH_TYPE_KEYS",
              "number": 0,
              "canonical": true,
              "description": "The app uses API-key credentials.\n\nAPI keys"
            },
            {
              "name": "AUTH_TYPE_OAUTH",
              "number": 1,
              "canonical": true,
              "description": "The app uses an OAuth authorization flow.\n\nOAuth 2.0"
            },
            {
              "name": "AUTH_TYPE_NONE",
              "number": 2,
              "canonical": true,
              "description": "The app does not require authentication credentials.\n\nNo auth required"
            }
          ],
          "x-enum-description": "Credential mechanism an integration app uses when connecting an account.",
          "description": "Authentication mechanism reported for the integration app.",
          "x-presence": "explicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit"
        },
        "imgSrc": {
          "type": "string",
          "description": "Logo image URL supplied for the integration app.",
          "x-presence": "implicit"
        },
        "customFieldsJson": {
          "type": "string",
          "description": "JSON string for custom fields.",
          "x-presence": "implicit"
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Categories assigned to the integration app.",
          "x-presence": "collection"
        },
        "featuredWeight": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Provider weight used to order featured apps.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "App",
        "url": "/api/models/schema-oti80oaqc4#response"
      }
    },
    "integrations_v1_services_pipedream_v1_PageInfo": {
      "type": "object",
      "description": "Pagination information returned in list responses",
      "properties": {
        "count": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Items in current page.",
          "x-presence": "implicit"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total items matching query.",
          "x-presence": "implicit"
        },
        "startCursor": {
          "type": "string",
          "description": "Cursor for start of page.",
          "x-presence": "implicit"
        },
        "endCursor": {
          "type": "string",
          "description": "Cursor for end of page.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PipedreamPageInfo",
        "url": "/api/models/schema-ohepdcsvjo#response"
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamRetrieveAppRequest": {
      "type": "object",
      "description": "Inputs for retrieving app catalog metadata by its Pipedream slug.",
      "properties": {
        "nameSlug": {
          "type": "string",
          "minLength": 1,
          "description": "Pipedream app slug identifying the catalog entry.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "nameSlug"
      ],
      "required": [
        "nameSlug"
      ]
    },
    "integrations_v1_services_gateway_v1_PipedreamRetrieveAppResponse": {
      "type": "object",
      "description": "Result payload for retrieving app catalog metadata by its Pipedream slug.",
      "properties": {
        "app": {
          "description": "Catalog metadata returned for the selected Pipedream app.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_pipedream_v1_App"
            }
          ]
        }
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamListAppCategoriesRequest": {
      "type": "object",
      "description": "Inputs for discovering the categories used by the Pipedream app catalog.",
      "properties": {
        "after": {
          "type": "string",
          "description": "Cursor selecting entries after the specified position in the provider listing.",
          "x-presence": "implicit"
        },
        "before": {
          "type": "string",
          "description": "Cursor selecting entries before the specified position in the provider listing.",
          "x-presence": "implicit"
        },
        "limit": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of entries requested from the listing.",
          "x-presence": "implicit"
        }
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamListAppCategoriesResponse": {
      "type": "object",
      "description": "Result payload for discovering the categories used by the Pipedream app catalog.",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/integrations_v1_services_pipedream_v1_AppCategory"
          },
          "description": "Pipedream app categories returned for this page.",
          "x-presence": "collection"
        },
        "pageInfo": {
          "description": "Cursor and count information returned with the provider listing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_pipedream_v1_PageInfo"
            }
          ]
        }
      }
    },
    "integrations_v1_services_pipedream_v1_AppCategory": {
      "type": "object",
      "description": "App category",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the app category record.",
          "x-presence": "implicit"
        },
        "nameSlug": {
          "type": "string",
          "description": "Category slug identifying the entry in the Pipedream catalog.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display label of the app category in the Pipedream catalog.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "AppCategory",
        "url": "/api/models/schema-ohbp8u7c1i#response"
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamListAccountsForCurrentUserRequest": {
      "type": "object",
      "description": "Inputs for listing Pipedream account connections belonging to the calling user.",
      "properties": {
        "after": {
          "type": "string",
          "description": "Cursor selecting entries after the specified position in the provider listing.",
          "x-presence": "implicit"
        },
        "before": {
          "type": "string",
          "description": "Cursor selecting entries before the specified position in the provider listing.",
          "x-presence": "implicit"
        },
        "limit": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of entries requested from the listing.",
          "x-presence": "implicit"
        },
        "oauthAppId": {
          "type": "string",
          "description": "OAuth application identifier used to select connected accounts.",
          "x-presence": "implicit"
        },
        "app": {
          "type": "string",
          "description": "Pipedream app slug used to restrict the operation to one connected app.",
          "x-presence": "implicit"
        },
        "includeCredentials": {
          "type": "boolean",
          "description": "Whether the provider should include account credentials in its response.",
          "x-presence": "implicit"
        }
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamListAccountsForCurrentUserResponse": {
      "type": "object",
      "description": "Result payload for listing Pipedream account connections belonging to the calling user.",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/integrations_v1_services_pipedream_v1_Account"
          },
          "description": "Pipedream connected accounts returned for this page.",
          "x-presence": "collection"
        },
        "pageInfo": {
          "description": "Cursor and count information returned with the provider listing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_pipedream_v1_PageInfo"
            }
          ]
        }
      }
    },
    "integrations_v1_services_pipedream_v1_Account": {
      "type": "object",
      "description": "Connected account (external user's OAuth connection to an app)",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique account ID.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name (e.g., user's email or handle).",
          "x-presence": "implicit"
        },
        "externalUserId": {
          "type": "string",
          "description": "Your application's user ID.",
          "x-presence": "implicit"
        },
        "healthy": {
          "type": "boolean",
          "description": "Whether the account credentials are valid.",
          "x-presence": "implicit"
        },
        "app": {
          "type": "string",
          "description": "Pipedream application selected by the request or returned by the provider.\n\nApp name\\_slug",
          "x-presence": "implicit"
        },
        "oauthAppId": {
          "type": "string",
          "description": "OAuth app identifier (if applicable).",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        },
        "credentialsLastRefreshedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the connected account credentials were last refreshed.",
          "x-presence": "message"
        },
        "credentialsExpiresAt": {
          "type": "string",
          "format": "date-time",
          "description": "Expiration time reported for the connected account credentials.",
          "x-presence": "message"
        },
        "error": {
          "type": "string",
          "description": "Error message if unhealthy.",
          "x-presence": "implicit"
        },
        "lastRefreshedAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO 8601 when credentials were last refreshed.",
          "x-presence": "message"
        },
        "nextRefreshAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO 8601 when credentials will next be refreshed.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "Account",
        "url": "/api/models/schema-1fd4ce3lnc#response"
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamDeleteAccountForCurrentUserRequest": {
      "type": "object",
      "description": "Inputs for removing a Pipedream account connection for the calling user.",
      "properties": {
        "accountId": {
          "type": "string",
          "minLength": 1,
          "description": "Which connected account to disconnect. Ownership is enforced downstream against the caller's own accounts — an id belonging to anyone else reads back as not found.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "accountId"
      ],
      "required": [
        "accountId"
      ]
    },
    "integrations_v1_services_gateway_v1_PipedreamDeleteAccountForCurrentUserResponse": {
      "type": "object",
      "description": "Result payload for removing a Pipedream account connection for the calling user.",
      "properties": {
        "deleted": {
          "type": "boolean",
          "description": "Whether the deletion operation reports the resource removed.",
          "x-presence": "implicit"
        }
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamDeleteExternalUserForCurrentUserRequest": {
      "type": "object",
      "description": "Inputs for removing the calling user’s Pipedream identity and connected accounts.",
      "properties": {}
    },
    "integrations_v1_services_gateway_v1_PipedreamDeleteExternalUserForCurrentUserResponse": {
      "type": "object",
      "description": "Result payload for removing the calling user’s Pipedream identity and connected accounts.",
      "properties": {
        "deleted": {
          "type": "boolean",
          "description": "Whether the deletion operation reports the resource removed.",
          "x-presence": "implicit"
        },
        "accountsDeleted": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "How many connected accounts went with the user. Counted from a read taken just before the delete, since Pipedream answers 204 with no body — a connection added between the two calls is still deleted, just not counted.",
          "x-presence": "implicit"
        }
      }
    },
    "integrations_v1_services_gateway_v1_PipedreamProxyForCurrentUserRequest": {
      "type": "object",
      "description": "Inputs for making an authenticated app API request through the calling user’s connected account.\n\n### Input constraints\n\n### method\n\nThe method must be exactly GET, HEAD, POST, PUT, PATCH, or DELETE. These literal choices are case-sensitive; no other method value satisfies this condition.",
      "properties": {
        "accountId": {
          "type": "string",
          "minLength": 1,
          "description": "One of the caller's own connected accounts (id from list-accounts). Any other id reads back as not found.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "HEAD",
            "POST",
            "PUT",
            "PATCH",
            "DELETE"
          ],
          "description": "HTTP method used for the proxied or signed request.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "in": [
                "GET",
                "HEAD",
                "POST",
                "PUT",
                "PATCH",
                "DELETE"
              ]
            }
          },
          "x-validation-scope": "request"
        },
        "url": {
          "type": "string",
          "minLength": 1,
          "maxLength": 4096,
          "description": "Destination URL for the proxied app API request.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1",
              "maxLen": "4096"
            }
          },
          "x-validation-scope": "request"
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Forwarded upstream (sent as x-pd-proxy-\\<name>).",
          "x-presence": "collection"
        },
        "body": {
          "type": "string",
          "format": "byte",
          "description": "Raw request body (base64 on the wire). Empty for GET/HEAD.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "accountId",
        "method",
        "url"
      ],
      "required": [
        "accountId",
        "method",
        "url"
      ]
    },
    "integrations_v1_services_gateway_v1_PipedreamProxyForCurrentUserResponse": {
      "type": "object",
      "description": "Result payload for making an authenticated app API request through the calling user’s connected account.",
      "properties": {
        "status": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "HTTP status code returned by the connected app’s API.",
          "x-presence": "implicit"
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP response headers returned by the connected app’s API.",
          "x-presence": "collection"
        },
        "body": {
          "type": "string",
          "format": "byte",
          "description": "Raw upstream body (base64 on the wire), capped at 4 MiB. Larger bodies are rejected rather than truncated, with OUT\\_OF\\_RANGE and reason RESPONSE\\_TOO\\_LARGE.",
          "x-presence": "implicit"
        }
      }
    },
    "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointRequest": {
      "type": "object",
      "description": "Inputs for registering a tenant webhook destination and its initial event subscription.\n\n### Input constraints\n\n### url\n\nThe url value must be a valid absolute URI.",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Display name of the tenant’s webhook delivery destination.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "URL of the tenant’s webhook delivery destination.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "uri": true
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit"
        },
        "eventTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Convenience: auto-create subscription.",
          "x-presence": "collection"
        }
      },
      "x-request-required": [
        "name",
        "url"
      ],
      "required": [
        "name",
        "url"
      ]
    },
    "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointResponse": {
      "type": "object",
      "description": "Result payload for registering a tenant webhook destination and its initial event subscription.",
      "properties": {
        "endpoint": {
          "description": "Webhook endpoint returned by the provider operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_Endpoint"
            }
          ]
        },
        "subscription": {
          "description": "If event\\_types provided.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_Subscription"
            }
          ]
        }
      }
    },
    "integrations_v1_services_webhook_v1_Endpoint": {
      "type": "object",
      "description": "Provider record describing a webhook delivery destination and its delivery settings.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the endpoint record.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name of the webhook delivery destination.",
          "x-presence": "implicit"
        },
        "url": {
          "type": "string",
          "description": "URL of the webhook delivery destination.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ENDPOINT_STATUS_ACTIVE",
                "ENDPOINT_STATUS_INACTIVE",
                "ENDPOINT_STATUS_PAUSED",
                "ENDPOINT_STATUS_PENDING"
              ],
              "x-enumDescriptions": {
                "ENDPOINT_STATUS_ACTIVE": "The endpoint is marked active for webhook delivery.",
                "ENDPOINT_STATUS_INACTIVE": "The endpoint is marked inactive by the delivery backend.",
                "ENDPOINT_STATUS_PAUSED": "Delivery to the endpoint is paused.",
                "ENDPOINT_STATUS_PENDING": "The endpoint is pending activation in the delivery backend."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "ENDPOINT_STATUS_ACTIVE",
              "number": 0,
              "canonical": true,
              "description": "The endpoint is marked active for webhook delivery."
            },
            {
              "name": "ENDPOINT_STATUS_INACTIVE",
              "number": 1,
              "canonical": true,
              "description": "The endpoint is marked inactive by the delivery backend."
            },
            {
              "name": "ENDPOINT_STATUS_PAUSED",
              "number": 2,
              "canonical": true,
              "description": "Delivery to the endpoint is paused."
            },
            {
              "name": "ENDPOINT_STATUS_PENDING",
              "number": 3,
              "canonical": true,
              "description": "The endpoint is pending activation in the delivery backend."
            }
          ],
          "x-enum-description": "Enums\n\nLifecycle condition reported for a webhook delivery endpoint.",
          "description": "Current state of the webhook endpoint.",
          "x-presence": "explicit"
        },
        "secret": {
          "type": "string",
          "description": "Secret associated with the webhook endpoint.",
          "x-presence": "implicit"
        },
        "httpTimeout": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Timeout for an individual webhook HTTP delivery, in seconds.",
          "x-presence": "implicit"
        },
        "rateLimit": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum delivery rate configured for the webhook endpoint.",
          "x-presence": "implicit"
        },
        "rateLimitDuration": {
          "type": "string",
          "description": "Delivery-rate window returned as a seconds-suffixed duration string (for example, 60s).",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "Endpoint",
        "url": "/api/models/schema-1ffl20kv2k#response"
      }
    },
    "integrations_v1_services_webhook_v1_Subscription": {
      "type": "object",
      "description": "Webhook event selection and retry settings associated with an endpoint.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the subscription record.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name of the webhook event subscription.",
          "x-presence": "implicit"
        },
        "endpointId": {
          "type": "string",
          "description": "Identifier of the webhook endpoint receiving deliveries.",
          "x-presence": "implicit"
        },
        "eventTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Event type names selected for the webhook subscription.",
          "x-presence": "collection"
        },
        "filter": {
          "description": "Event-body and header conditions used to select webhook events for this subscription.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_SubscriptionFilter"
            }
          ]
        },
        "retryConfig": {
          "description": "Retry policy applied to the webhook subscription.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_RetryConfig"
            }
          ]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "externalId": {
          "type": "string",
          "description": "Client-supplied external subscription identifier. Empty when none was supplied.",
          "x-presence": "implicit"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated; equals created\\_at until the first accepted update.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "Subscription",
        "url": "/api/models/schema-1fn66l17fv#response"
      }
    },
    "integrations_v1_services_webhook_v1_SubscriptionFilter": {
      "type": "object",
      "description": "Event-body and header conditions selecting webhook events for a subscription.",
      "properties": {
        "body": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Event-body matching rules used by the webhook subscription filter.",
          "x-presence": "collection"
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Header-matching rules used to select events for the webhook subscription.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "SubscriptionFilter",
        "url": "/api/models/schema-1fl5depe11#response"
      }
    },
    "integrations_v1_services_webhook_v1_RetryConfig": {
      "type": "object",
      "description": "Retry strategy, attempt limit, and interval for failed webhook deliveries.",
      "properties": {
        "strategy": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "RETRY_STRATEGY_LINEAR",
                "RETRY_STRATEGY_EXPONENTIAL"
              ],
              "x-enumDescriptions": {
                "RETRY_STRATEGY_LINEAR": "Retry using the configured linear interval strategy.",
                "RETRY_STRATEGY_EXPONENTIAL": "Increase the delay between retries using exponential backoff."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "RETRY_STRATEGY_LINEAR",
              "number": 0,
              "canonical": true,
              "description": "Retry using the configured linear interval strategy."
            },
            {
              "name": "RETRY_STRATEGY_EXPONENTIAL",
              "number": 1,
              "canonical": true,
              "description": "Increase the delay between retries using exponential backoff."
            }
          ],
          "x-enum-description": "Backoff strategy applied between webhook delivery attempts.",
          "description": "Webhook retry strategy selected in the provider configuration.",
          "x-presence": "explicit"
        },
        "retryCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum retry count configured for webhook delivery.",
          "x-presence": "implicit"
        },
        "intervalSeconds": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Delay between webhook delivery retries, in seconds.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "RetryConfig",
        "url": "/api/models/schema-1fkul0p8vd#response"
      }
    },
    "integrations_v1_services_webhookgateway_v1_ListWebhookEndpointsRequest": {
      "type": "object",
      "description": "Inputs for listing webhook destinations registered for the tenant.",
      "properties": {
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation.",
          "x-presence": "implicit"
        },
        "perPage": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page.",
          "x-presence": "implicit"
        }
      }
    },
    "integrations_v1_services_webhookgateway_v1_ListWebhookEndpointsResponse": {
      "type": "object",
      "description": "Result payload for listing webhook destinations registered for the tenant.",
      "properties": {
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_Endpoint"
          },
          "description": "Webhook endpoints returned by the listing.",
          "x-presence": "collection"
        },
        "pagination": {
          "description": "Page position and total counts reported with the listing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_PaginationInfo"
            }
          ]
        }
      }
    },
    "integrations_v1_services_webhook_v1_PaginationInfo": {
      "type": "object",
      "description": "Page position and aggregate counts accompanying a paginated provider listing.",
      "properties": {
        "total": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of entries reported by the listing.",
          "x-presence": "implicit"
        },
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation.",
          "x-presence": "implicit"
        },
        "perPage": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page.",
          "x-presence": "implicit"
        },
        "totalPages": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of pages reported for the current query.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PaginationInfo",
        "url": "/api/models/schema-ohggnansec#response"
      }
    },
    "integrations_v1_services_webhookgateway_v1_UpdateWebhookEndpointRequest": {
      "type": "object",
      "description": "Inputs for changing the address or descriptive metadata of a tenant webhook destination.",
      "properties": {
        "endpointId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the webhook endpoint receiving deliveries.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "name": {
          "type": "string",
          "description": "Display name of the tenant’s webhook delivery destination.",
          "x-presence": "implicit"
        },
        "url": {
          "type": "string",
          "description": "URL of the tenant’s webhook delivery destination.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "endpointId"
      ],
      "required": [
        "endpointId"
      ]
    },
    "integrations_v1_services_webhookgateway_v1_UpdateWebhookEndpointResponse": {
      "type": "object",
      "description": "Result payload for changing the address or descriptive metadata of a tenant webhook destination.",
      "properties": {
        "endpoint": {
          "description": "Webhook endpoint returned by the provider operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_Endpoint"
            }
          ]
        }
      }
    },
    "integrations_v1_services_webhookgateway_v1_DeleteWebhookEndpointRequest": {
      "type": "object",
      "description": "Inputs for removing a tenant’s webhook delivery destination.",
      "properties": {
        "endpointId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the webhook endpoint receiving deliveries.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "endpointId"
      ],
      "required": [
        "endpointId"
      ]
    },
    "integrations_v1_services_webhookgateway_v1_DeleteWebhookEndpointResponse": {
      "type": "object",
      "description": "Response schema for removing a tenant’s webhook delivery destination; no response fields are declared.",
      "properties": {}
    },
    "integrations_v1_services_webhookgateway_v1_CreateWebhookSubscriptionRequest": {
      "type": "object",
      "description": "Inputs for subscribing a tenant webhook endpoint to selected event types.",
      "properties": {
        "endpointId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the webhook endpoint receiving deliveries.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "eventTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1,
          "description": "Event type names selected for the webhook subscription.",
          "x-presence": "collection",
          "x-protovalidate": {
            "repeated": {
              "minItems": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "externalId": {
          "type": "string",
          "maxLength": 255,
          "description": "Optional client-supplied identifier, unique among the tenant’s live subscriptions. Use it to address deletion by a name your application manages; it becomes reusable after deletion.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "255"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "endpointId",
        "eventTypes"
      ],
      "required": [
        "endpointId",
        "eventTypes"
      ]
    },
    "integrations_v1_services_webhookgateway_v1_CreateWebhookSubscriptionResponse": {
      "type": "object",
      "description": "Result payload for subscribing a tenant webhook endpoint to selected event types.",
      "properties": {
        "subscription": {
          "description": "Webhook subscription returned by the provider operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_Subscription"
            }
          ]
        }
      }
    },
    "integrations_v1_services_webhookgateway_v1_ListWebhookSubscriptionsRequest": {
      "type": "object",
      "description": "Inputs for listing event subscriptions registered for tenant webhook destinations.",
      "properties": {
        "endpointId": {
          "type": "string",
          "description": "Optional: filter by endpoint.",
          "x-presence": "implicit"
        },
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation.",
          "x-presence": "implicit"
        },
        "perPage": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page.",
          "x-presence": "implicit"
        }
      }
    },
    "integrations_v1_services_webhookgateway_v1_ListWebhookSubscriptionsResponse": {
      "type": "object",
      "description": "Result payload for listing event subscriptions registered for tenant webhook destinations.",
      "properties": {
        "subscriptions": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_Subscription"
          },
          "description": "Webhook subscriptions returned by the listing.",
          "x-presence": "collection"
        },
        "pagination": {
          "description": "Page position and total counts reported with the listing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_PaginationInfo"
            }
          ]
        }
      }
    },
    "integrations_v1_services_webhookgateway_v1_DeleteWebhookSubscriptionRequest": {
      "type": "object",
      "description": "Inputs for removing a tenant webhook subscription by its external identifier.",
      "properties": {
        "subscriptionId": {
          "type": "string",
          "description": "Identifier of the subscription to delete. Supply exactly one of subscription\\_id or external\\_id.",
          "x-presence": "implicit"
        },
        "externalId": {
          "type": "string",
          "maxLength": 255,
          "description": "Stable external identifier used to address the webhook subscription.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "255"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.reference",
            "message": "exactly one of subscription_id or external_id must be set",
            "expression": "[size(this.subscription_id) > 0, size(this.external_id) > 0].filter(f, f).size() == 1"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "integrations_v1_services_webhookgateway_v1_DeleteWebhookSubscriptionResponse": {
      "type": "object",
      "description": "Response schema for removing a tenant webhook subscription by its external identifier; no response fields are declared.",
      "properties": {}
    },
    "integrations_v1_services_webhookgateway_v1_ListWebhookDeliveriesRequest": {
      "type": "object",
      "description": "Inputs for querying delivery attempts visible through the tenant webhook gateway.",
      "properties": {
        "endpointId": {
          "type": "string",
          "description": "Optional: filter by endpoint.",
          "x-presence": "implicit"
        },
        "subscriptionId": {
          "type": "string",
          "description": "Optional: filter by subscription.",
          "x-presence": "implicit"
        },
        "eventId": {
          "type": "string",
          "description": "Optional: filter by event.",
          "x-presence": "implicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "DELIVERY_STATUS_SCHEDULED",
                "DELIVERY_STATUS_PROCESSING",
                "DELIVERY_STATUS_COMPLETED",
                "DELIVERY_STATUS_RETRY",
                "DELIVERY_STATUS_FAILED",
                "DELIVERY_STATUS_DISCARDED"
              ],
              "x-enumDescriptions": {
                "DELIVERY_STATUS_SCHEDULED": "The delivery is scheduled and waiting for processing.",
                "DELIVERY_STATUS_PROCESSING": "The delivery backend is processing a delivery attempt.",
                "DELIVERY_STATUS_COMPLETED": "The webhook delivery completed successfully.\n\nTerminal.",
                "DELIVERY_STATUS_RETRY": "The delivery is awaiting another attempt after a retryable failure.",
                "DELIVERY_STATUS_FAILED": "The delivery is reported as failed by the backend.",
                "DELIVERY_STATUS_DISCARDED": "The delivery backend discarded the event instead of completing delivery."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "DELIVERY_STATUS_SCHEDULED",
              "number": 0,
              "canonical": true,
              "description": "The delivery is scheduled and waiting for processing."
            },
            {
              "name": "DELIVERY_STATUS_PROCESSING",
              "number": 1,
              "canonical": true,
              "description": "The delivery backend is processing a delivery attempt."
            },
            {
              "name": "DELIVERY_STATUS_COMPLETED",
              "number": 2,
              "canonical": true,
              "description": "The webhook delivery completed successfully.\n\nTerminal."
            },
            {
              "name": "DELIVERY_STATUS_RETRY",
              "number": 3,
              "canonical": true,
              "description": "The delivery is awaiting another attempt after a retryable failure."
            },
            {
              "name": "DELIVERY_STATUS_FAILED",
              "number": 4,
              "canonical": true,
              "description": "The delivery is reported as failed by the backend."
            },
            {
              "name": "DELIVERY_STATUS_DISCARDED",
              "number": 5,
              "canonical": true,
              "description": "The delivery backend discarded the event instead of completing delivery."
            }
          ],
          "x-enum-description": "Current delivery state of a webhook event sent to an endpoint.",
          "description": "Delivery status used to restrict the tenant webhook-delivery query.\n\nOptional: filter by status",
          "x-presence": "explicit"
        },
        "createdAfter": {
          "type": "string",
          "format": "date-time",
          "description": "Optional: filter by creation time.",
          "x-presence": "message"
        },
        "createdBefore": {
          "type": "string",
          "format": "date-time",
          "description": "Optional: filter by creation time.",
          "x-presence": "message"
        },
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation.",
          "x-presence": "implicit"
        },
        "perPage": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page.",
          "x-presence": "implicit"
        }
      }
    },
    "integrations_v1_services_webhookgateway_v1_ListWebhookDeliveriesResponse": {
      "type": "object",
      "description": "Result payload for querying delivery attempts visible through the tenant webhook gateway.",
      "properties": {
        "deliveries": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_EventDelivery"
          },
          "description": "Webhook delivery records matching the listing query.",
          "x-presence": "collection"
        },
        "pagination": {
          "description": "Page position and total counts reported with the listing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_PaginationInfo"
            }
          ]
        }
      }
    },
    "integrations_v1_services_webhook_v1_EventDelivery": {
      "type": "object",
      "description": "Delivery-attempt state and response information for a webhook event.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the event delivery record.",
          "x-presence": "implicit"
        },
        "eventId": {
          "type": "string",
          "description": "Identifier of the webhook event being delivered.",
          "x-presence": "implicit"
        },
        "endpointId": {
          "type": "string",
          "description": "Identifier of the webhook endpoint receiving deliveries.",
          "x-presence": "implicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "DELIVERY_STATUS_SCHEDULED",
                "DELIVERY_STATUS_PROCESSING",
                "DELIVERY_STATUS_COMPLETED",
                "DELIVERY_STATUS_RETRY",
                "DELIVERY_STATUS_FAILED",
                "DELIVERY_STATUS_DISCARDED"
              ],
              "x-enumDescriptions": {
                "DELIVERY_STATUS_SCHEDULED": "The delivery is scheduled and waiting for processing.",
                "DELIVERY_STATUS_PROCESSING": "The delivery backend is processing a delivery attempt.",
                "DELIVERY_STATUS_COMPLETED": "The webhook delivery completed successfully.\n\nTerminal.",
                "DELIVERY_STATUS_RETRY": "The delivery is awaiting another attempt after a retryable failure.",
                "DELIVERY_STATUS_FAILED": "The delivery is reported as failed by the backend.",
                "DELIVERY_STATUS_DISCARDED": "The delivery backend discarded the event instead of completing delivery."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "DELIVERY_STATUS_SCHEDULED",
              "number": 0,
              "canonical": true,
              "description": "The delivery is scheduled and waiting for processing."
            },
            {
              "name": "DELIVERY_STATUS_PROCESSING",
              "number": 1,
              "canonical": true,
              "description": "The delivery backend is processing a delivery attempt."
            },
            {
              "name": "DELIVERY_STATUS_COMPLETED",
              "number": 2,
              "canonical": true,
              "description": "The webhook delivery completed successfully.\n\nTerminal."
            },
            {
              "name": "DELIVERY_STATUS_RETRY",
              "number": 3,
              "canonical": true,
              "description": "The delivery is awaiting another attempt after a retryable failure."
            },
            {
              "name": "DELIVERY_STATUS_FAILED",
              "number": 4,
              "canonical": true,
              "description": "The delivery is reported as failed by the backend."
            },
            {
              "name": "DELIVERY_STATUS_DISCARDED",
              "number": 5,
              "canonical": true,
              "description": "The delivery backend discarded the event instead of completing delivery."
            }
          ],
          "x-enum-description": "Current delivery state of a webhook event sent to an endpoint.",
          "description": "Current delivery status reported for this webhook event attempt.",
          "x-presence": "explicit"
        },
        "attempts": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of delivery attempts reported for the webhook event.",
          "x-presence": "implicit"
        },
        "eventType": {
          "type": "string",
          "description": "Type of the webhook event represented by this delivery.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        },
        "httpStatus": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "HTTP response status reported for the delivery attempt.",
          "x-presence": "implicit"
        },
        "responseData": {
          "type": "string",
          "description": "Response body reported by the webhook delivery target.",
          "x-presence": "implicit"
        },
        "error": {
          "type": "string",
          "description": "Error information reported for this operation or item.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "EventDelivery",
        "url": "/api/models/schema-1fiv947q56#response"
      }
    },
    "integrations_v1_services_webhookgateway_v1_RetryWebhookDeliveryRequest": {
      "type": "object",
      "description": "Inputs for requesting another attempt for a tenant webhook delivery.",
      "properties": {
        "deliveryId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the webhook delivery to inspect or retry.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "deliveryId"
      ],
      "required": [
        "deliveryId"
      ]
    },
    "integrations_v1_services_webhookgateway_v1_RetryWebhookDeliveryResponse": {
      "type": "object",
      "description": "Result payload for requesting another attempt for a tenant webhook delivery.",
      "properties": {
        "delivery": {
          "description": "Webhook delivery record returned by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/integrations_v1_services_webhook_v1_EventDelivery"
            }
          ]
        }
      }
    },
    "llm_v1_services_agent_profile_v1_CreateAgentProfileRequest": {
      "type": "object",
      "description": "Inputs for creating a project-scoped agent profile with prompt and generation settings.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project owning the agent-profile library. Use default for the default project.",
          "x-presence": "implicit"
        },
        "profile": {
          "description": "Agent profile definition to add to the project library.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_AgentProfileInput"
            }
          ],
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "profile"
      ],
      "required": [
        "profile"
      ]
    },
    "llm_v1_common_v1_AgentProfileInput": {
      "type": "object",
      "description": "A reusable persona with model configuration, tools and metadata describing when it should be selected. See the profile-selection and versioning guide for profile resolution and fragment versions.",
      "properties": {
        "profileId": {
          "type": "string",
          "description": "Stable id, unique within the project library.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name used when selecting an agent profile.\n\ne.g. \"Nutrition Coach\"",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-facing summary.",
          "x-presence": "implicit"
        },
        "whenToUse": {
          "type": "string",
          "description": "Routing hint, Skill-style \"use when…\"",
          "x-presence": "implicit"
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Keywords associated with discovery or selection of the agent profile.",
          "x-presence": "collection"
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether the profile is enabled for selection. Omission during creation defaults to true; an explicitly false value creates a disabled profile. Disabled profiles are not selectable.",
          "x-presence": "explicit"
        },
        "generationConfig": {
          "description": "Model, sampling, and tool configuration used for generation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ]
        },
        "mcpServers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerReferenceInput"
          },
          "description": "MCP servers used for tool discovery when this profile is active. This list replaces the conversation-wide MCP server list for those turns.",
          "x-presence": "collection"
        },
        "variableSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_PromptVariableSpecInput"
          },
          "description": "Variables consumed by the profile’s system-prompt template, rendered from the conversation’s prompt\\_variables.",
          "x-presence": "collection"
        },
        "version": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Output-only immutable revision of the profile. Versions start at one and increase on successful mutations; values supplied on writes are ignored.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "AgentProfile",
        "url": "/api/models/schema-1hmbcecg1j#request"
      }
    },
    "llm_v1_common_v1_GenerationConfigInput": {
      "type": "object",
      "description": "Canonical generation configuration\n\nSet the language preference to a BCP-47 tag (for example, `\"fr\"` or `\"pt-BR\"`). The platform injects a `\"Respond only in [language]\"` instruction into **every** LLM call for this conversation. The instruction is not persisted to history.\n\nSee [Generation configuration](/api/model-controls/configuration) for how settings combine across scopes.",
      "properties": {
        "model": {
          "type": "string",
          "description": "Primary model identifier requested for generation.",
          "x-presence": "implicit"
        },
        "models": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Candidate models for routing.",
          "x-presence": "collection"
        },
        "systemPrompt": {
          "type": "string",
          "description": "Optional system prompt prepended as a system message. An explicitly empty value in a per-call override clears the base prompt.",
          "x-presence": "explicit"
        },
        "modelRoutingFilter": {
          "description": "Optional metadata-based model routing filter. When set, candidate models are filtered by these criteria before routing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ModelRoutingFilterInput"
            }
          ]
        },
        "provider": {
          "description": "Provider/multi-provider routing preferences",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ProviderPreferencesInput"
            }
          ]
        },
        "reasoning": {
          "description": "Reasoning effort and output options passed to the model provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ReasoningOptionsInput"
            }
          ]
        },
        "usage": {
          "description": "Token and cost accounting associated with the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_UsageOptionsInput"
            }
          ]
        },
        "transforms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provider transformations requested for the generation input.",
          "x-presence": "collection"
        },
        "tools": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolDefinitionInput"
          },
          "description": "Tool definitions exposed to the model for server-side execution.",
          "x-presence": "collection"
        },
        "toolChoice": {
          "description": "Policy controlling whether and which tool the model may call.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolChoiceInput"
            }
          ]
        },
        "clientTools": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolDefinitionInput"
          },
          "description": "Client-side tools that should be exposed to the model but executed by the client (not the workflow/MCP)",
          "x-presence": "collection"
        },
        "toolPolicy": {
          "description": "Per-run tool execution policy (approvals, ordering, limits, retries, timeouts)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolExecutionPolicyInput"
            }
          ]
        },
        "temperature": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Sampling temperature, from 0.0 to 2.0. Omission inherits the base configuration or provider default; an explicitly supplied zero remains an override.",
          "x-presence": "explicit"
        },
        "topP": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Cumulative token-probability cutoff used for nucleus sampling, from 0.0 through 1.0.",
          "x-presence": "explicit"
        },
        "maxOutputTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum output-token count requested from the model provider; corresponds to max\\_tokens in provider requests.",
          "x-presence": "explicit"
        },
        "frequencyPenalty": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Sampling penalty applied to tokens according to their prior frequency.",
          "x-presence": "explicit"
        },
        "presencePenalty": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Sampling penalty applied to tokens already present in generated content.",
          "x-presence": "explicit"
        },
        "stopSequences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Token sequences at which the model should stop generation.",
          "x-presence": "collection"
        },
        "seed": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Deterministic control where supported.",
          "x-presence": "explicit"
        },
        "responseFormat": {
          "description": "Structured-output format and schema requested for the model response.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig_ResponseFormatInput"
            }
          ]
        },
        "allowParallelToolCalls": {
          "type": "boolean",
          "description": "Allow the model to issue multiple tool calls in parallel where supported",
          "x-presence": "explicit"
        },
        "topK": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of candidate next tokens considered by providers that support top-k sampling.",
          "x-presence": "explicit"
        },
        "repetitionPenalty": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Provider sampling penalty used to discourage repeated output.",
          "x-presence": "explicit"
        },
        "logitBias": {
          "type": "object",
          "additionalProperties": {
            "oneOf": [
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string",
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ]
          },
          "description": "Per-token adjustments applied to the provider token-selection logits.",
          "x-presence": "collection"
        },
        "topLogprobs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of top token log probabilities requested from the provider.",
          "x-presence": "explicit"
        },
        "minP": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Minimum relative token probability used by supported sampling providers.",
          "x-presence": "explicit"
        },
        "topA": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Adaptive probability cutoff used by supported sampling providers.",
          "x-presence": "explicit"
        },
        "user": {
          "type": "string",
          "description": "User identifier forwarded for provider-side request attribution.",
          "x-presence": "explicit"
        },
        "modalities": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "MODALITY_TEXT",
                  "MODALITY_IMAGE",
                  "MODALITY_AUDIO"
                ],
                "x-enumDescriptions": {
                  "MODALITY_TEXT": "Request generated text output.",
                  "MODALITY_IMAGE": "Request generated image output where the model supports it.",
                  "MODALITY_AUDIO": "Request generated audio output where the model supports it."
                }
              },
              {
                "type": "integer",
                "format": "int32"
              }
            ],
            "x-enum-values": [
              {
                "name": "MODALITY_TEXT",
                "number": 0,
                "canonical": true,
                "description": "Request generated text output."
              },
              {
                "name": "MODALITY_IMAGE",
                "number": 1,
                "canonical": true,
                "description": "Request generated image output where the model supports it."
              },
              {
                "name": "MODALITY_AUDIO",
                "number": 2,
                "canonical": true,
                "description": "Request generated audio output where the model supports it."
              }
            ],
            "x-enum-description": "Output media requested from a model that supports that modality.",
            "description": "Output media requested from a model that supports that modality."
          },
          "description": "Output modalities (e.g., \\[TEXT, IMAGE])",
          "x-presence": "collection"
        },
        "plugins": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig_PluginConfigInput"
          },
          "description": "Provider plugins requested for pre-processing or post-processing.",
          "x-presence": "collection"
        },
        "languagePreference": {
          "type": "string",
          "minLength": 2,
          "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
          "description": "Language preference (BCP-47), e.g., \"en-US\", \"es-ES\" (presence-aware)",
          "x-presence": "explicit",
          "x-protovalidate": {
            "string": {
              "minLen": "2",
              "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
            }
          },
          "x-validation-scope": "request"
        },
        "timeAware": {
          "description": "Time-aware generation options (current time, message timestamps, file timestamps)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_TimeAwareConfigInput"
            }
          ]
        },
        "turnContext": {
          "description": "Turn context configuration for turn-aware generation",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_TurnContextConfigInput"
            }
          ]
        },
        "mem0": {
          "description": "Configuration for semantic memory search, context injection and extraction during generation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Mem0ConfigInput"
            }
          ]
        },
        "requestTimeoutSeconds": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Timeout for an individual model-provider request, in seconds. Zero selects the 30-second default; other values are clamped to the range 1–600.",
          "x-presence": "implicit"
        },
        "fileResolution": {
          "description": "Configuration for resolving FILE\\_ID content parts to fresh signed URLs before calling a model provider. When unset, unresolved content is skipped.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_FileResolutionConfigInput"
            }
          ]
        },
        "clearTools": {
          "type": "boolean",
          "description": "Set to true with an empty tools list in an override to clear inherited tools. An empty list alone inherits the base tools. This directive applies only when merging an override.",
          "x-presence": "implicit"
        },
        "clearClientTools": {
          "type": "boolean",
          "description": "Set to true with an empty client tools list in an override to clear inherited client tools for that turn. An empty list alone inherits the base client tools, and a nonempty list replaces them regardless of this directive. It applies only when merging an override and leaves server tool selection unchanged.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "GenerationConfig",
        "url": "/api/models/schema-1h82h7ri5p#request"
      }
    },
    "llm_v1_common_v1_ModelRoutingFilterInput": {
      "type": "object",
      "description": "ModelRoutingFilter defines metadata-based criteria for filtering model candidates. All filters are ANDed — a model must pass every specified filter.\n\nUnset or zero fields do not filter that dimension. Unknown maximum-output metadata currently passes a minimum-output filter, while an empty modality list fails a required-modality check. A passing metadata check is not proof the provider will honor the eventual request.\n\n[`maxPromptCost`](/api/models/schema-1ga4tjqqg1#request-field-maxpromptcost) and [`maxCompletionCost`](/api/models/schema-1ga4tjqqg1#request-field-maxcompletioncost) compare per-token catalog prices; unknown/unparseable prices currently pass. They do not cap total tokens, tool costs, retries or aggregate provider spend. Before sending paid traffic, confirm which spending limits are actually enforced for your account. Metadata-based capability filters also do not prove that a provider will honor a parameter on the eventual request.",
      "properties": {
        "minContextLength": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Minimum context window (tokens). Models below this are excluded.",
          "x-presence": "implicit"
        },
        "minMaxCompletionTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Minimum max completion tokens. Models below this are excluded. Models reporting 0 (unknown) pass through (permissive).",
          "x-presence": "implicit"
        },
        "requiredInputModalities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required input modalities (e.g., \\[\"image\", \"audio\"]). Model must support ALL listed. Models with empty input\\_modalities are filtered out (strict).",
          "x-presence": "collection"
        },
        "requiredOutputModalities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required output modalities (e.g., \\[\"image\"]). Model must support ALL listed. Models with empty output\\_modalities are filtered out (strict).",
          "x-presence": "collection"
        },
        "maxPromptCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Maximum cost per prompt token (e.g., 0.000003). 0 = no limit. Unparseable pricing strings pass through (permissive).",
          "x-presence": "implicit"
        },
        "maxCompletionCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Maximum cost per completion token. 0 = no limit. Unparseable pricing strings pass through (permissive).",
          "x-presence": "implicit"
        },
        "excludeModerated": {
          "type": "boolean",
          "description": "Exclude models with content moderation enabled.",
          "x-presence": "implicit"
        },
        "requiredParameters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required supported parameters (e.g., \\[\"tools\", \"response\\_format\"]). Model must support ALL listed.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "ModelRoutingFilter",
        "url": "/api/models/schema-1ga4tjqqg1#request"
      }
    },
    "llm_v1_common_v1_ProviderPreferencesInput": {
      "type": "object",
      "description": "Routing preferences restricting and ordering the model providers eligible for a request.",
      "properties": {
        "order": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Preferred ordering of model providers for routing.",
          "x-presence": "collection"
        },
        "allowFallbacks": {
          "type": "boolean",
          "description": "The current chat routing path enables provider fallbacks even when this value is false or omitted. This field cannot disable fallback in that path. Use `only` to restrict eligible providers; confirm the selected providers support the requested model.",
          "x-presence": "implicit"
        },
        "requireParameters": {
          "type": "boolean",
          "description": "Whether routing requires providers to support the requested parameters.",
          "x-presence": "implicit"
        },
        "dataCollection": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "DATA_COLLECTION_MODE_ALLOW",
                "DATA_COLLECTION_MODE_DENY"
              ],
              "x-enumDescriptions": {
                "DATA_COLLECTION_MODE_ALLOW": "Allow routing to providers that may collect submitted data under their policies.",
                "DATA_COLLECTION_MODE_DENY": "Request routing only to providers that do not collect submitted data under the routing policy."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "DATA_COLLECTION_MODE_ALLOW",
              "number": 0,
              "canonical": true,
              "description": "Allow routing to providers that may collect submitted data under their policies."
            },
            {
              "name": "DATA_COLLECTION_MODE_DENY",
              "number": 1,
              "canonical": true,
              "description": "Request routing only to providers that do not collect submitted data under the routing policy."
            }
          ],
          "x-enum-description": "Provider-routing preference for whether providers may collect submitted data.",
          "description": "Provider data-collection preference used when routing the request.",
          "x-presence": "explicit"
        },
        "zdr": {
          "type": "boolean",
          "description": "Whether routing requests providers offering zero data retention.",
          "x-presence": "implicit"
        },
        "only": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provider identifiers allowed by the routing preference.",
          "x-presence": "collection"
        },
        "ignore": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provider identifiers excluded by the routing preference.",
          "x-presence": "collection"
        },
        "quantizations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Model quantization formats allowed by the routing preference.\n\ngeneric string for portability",
          "x-presence": "collection"
        },
        "sort": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "PROVIDER_SORT_PRICE",
                "PROVIDER_SORT_THROUGHPUT",
                "PROVIDER_SORT_LATENCY"
              ],
              "x-enumDescriptions": {
                "PROVIDER_SORT_PRICE": "Prefer providers with lower price.",
                "PROVIDER_SORT_THROUGHPUT": "Prefer providers with higher throughput.",
                "PROVIDER_SORT_LATENCY": "Prefer providers with lower latency."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "PROVIDER_SORT_PRICE",
              "number": 0,
              "canonical": true,
              "description": "Prefer providers with lower price."
            },
            {
              "name": "PROVIDER_SORT_THROUGHPUT",
              "number": 1,
              "canonical": true,
              "description": "Prefer providers with higher throughput."
            },
            {
              "name": "PROVIDER_SORT_LATENCY",
              "number": 2,
              "canonical": true,
              "description": "Prefer providers with lower latency."
            }
          ],
          "x-enum-description": "Metric used to order eligible model providers.",
          "description": "Metric used to order eligible model providers.",
          "x-presence": "explicit"
        },
        "maxPrice": {
          "description": "Upper price bounds used when selecting a model provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ProviderMaxPriceInput"
            }
          ]
        },
        "enforceDistillableText": {
          "type": "boolean",
          "description": "Embeddings: enforce distillable text.",
          "x-presence": "implicit"
        },
        "preferredMinThroughput": {
          "description": "Deprioritize providers below this throughput (tokens/sec). Does not exclude — just pushes to end of preference list.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PercentileThresholdInput"
            }
          ]
        },
        "preferredMaxLatency": {
          "description": "Deprioritize providers above this latency (ms).",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PercentileThresholdInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ProviderPreferences",
        "url": "/api/models/schema-1gg690bhqh#request"
      }
    },
    "llm_v1_common_v1_ProviderMaxPriceInput": {
      "type": "object",
      "description": "Routing / provider preferences (generic superset)",
      "properties": {
        "prompt": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "$/1M prompt tokens.",
          "x-presence": "implicit"
        },
        "completion": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "$/1M completion tokens.",
          "x-presence": "implicit"
        },
        "request": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Maximum provider cost allowed per request, in US dollars.\n\n$/request",
          "x-presence": "implicit"
        },
        "image": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Maximum provider cost allowed per image, in US dollars.\n\n$/image",
          "x-presence": "implicit"
        },
        "audio": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "$/1M audio tokens.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ProviderMaxPrice",
        "url": "/api/models/schema-1geaq4stvt#request"
      }
    },
    "llm_v1_common_v1_PercentileThresholdInput": {
      "type": "object",
      "description": "Percentile thresholds for provider performance metrics",
      "properties": {
        "p50": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Threshold applied to the provider metric’s 50th percentile.",
          "x-presence": "implicit"
        },
        "p90": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Threshold applied to the provider metric’s 90th percentile.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PercentileThreshold",
        "url": "/api/models/schema-1gcuue0out#request"
      }
    },
    "llm_v1_common_v1_ReasoningOptionsInput": {
      "type": "object",
      "description": "Reasoning options\n\nSupported effort settings depend on the selected model; a setting can be rejected or ignored when unsupported. To ask for the answer without returned reasoning text, set [`exclude`](/api/models/schema-1gi26i7r89#request-field-exclude) to `true`. That controls the output you receive, not whether the model uses or bills reasoning tokens.",
      "properties": {
        "effort": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EFFORT_HIGH",
                "EFFORT_MEDIUM",
                "EFFORT_LOW",
                "EFFORT_XHIGH",
                "EFFORT_MINIMAL",
                "EFFORT_NONE"
              ],
              "x-enumDescriptions": {
                "EFFORT_HIGH": "Request the provider's high reasoning-effort level.",
                "EFFORT_MEDIUM": "Request the provider's medium reasoning-effort level.",
                "EFFORT_LOW": "Request the provider's low reasoning-effort level.",
                "EFFORT_XHIGH": "Request the provider's extra-high reasoning-effort level where supported.",
                "EFFORT_MINIMAL": "Request the provider's minimal reasoning-effort level where supported.",
                "EFFORT_NONE": "Request no reasoning effort where the provider supports disabling it."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "EFFORT_HIGH",
              "number": 0,
              "canonical": true,
              "description": "Request the provider's high reasoning-effort level."
            },
            {
              "name": "EFFORT_MEDIUM",
              "number": 1,
              "canonical": true,
              "description": "Request the provider's medium reasoning-effort level."
            },
            {
              "name": "EFFORT_LOW",
              "number": 2,
              "canonical": true,
              "description": "Request the provider's low reasoning-effort level."
            },
            {
              "name": "EFFORT_XHIGH",
              "number": 3,
              "canonical": true,
              "description": "Request the provider's extra-high reasoning-effort level where supported."
            },
            {
              "name": "EFFORT_MINIMAL",
              "number": 4,
              "canonical": true,
              "description": "Request the provider's minimal reasoning-effort level where supported."
            },
            {
              "name": "EFFORT_NONE",
              "number": 5,
              "canonical": true,
              "description": "Request no reasoning effort where the provider supports disabling it."
            }
          ],
          "x-enum-description": "Requested reasoning effort sent to the model provider; supported levels and their effect depend on the chosen model.",
          "description": "Requested model reasoning effort.",
          "x-presence": "explicit"
        },
        "maxTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum reasoning-token count requested from the model provider.",
          "x-presence": "implicit"
        },
        "exclude": {
          "type": "boolean",
          "description": "Whether the provider should omit reasoning content from its response.",
          "x-presence": "implicit"
        },
        "includeReasoningHistory": {
          "type": "boolean",
          "description": "When true (default), reasoning content from previous turns is included in multi-turn requests to enable provider continuity.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ReasoningOptions",
        "url": "/api/models/schema-1gi26i7r89#request"
      }
    },
    "llm_v1_common_v1_UsageOptionsInput": {
      "type": "object",
      "description": "Usage accounting preferences",
      "properties": {
        "include": {
          "type": "boolean",
          "description": "Whether usage accounting should be included in the provider response.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "UsageOptions",
        "url": "/api/models/schema-1h615aquj0#request"
      }
    },
    "llm_v1_common_v1_ToolDefinitionInput": {
      "type": "object",
      "description": "A tool or function the model can request during generation.\n\n**[`serverId`](/api/models/schema-1gomaj79cc#request-field-serverid) is required** on every tool definition. Use `\"client\"` as the conventional value for tools you execute — client tools are matched by **name**, not by server.\n\n**[`parametersJsonSchema`](/api/models/schema-1gomaj79cc#request-field-parametersjsonschema)** is what the model reads to work out how to call your tool. Describe the fields accurately. It is not a validation contract — the platform never checks the model's arguments against it, so treat what arrives as untrusted.",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Name used to select and invoke the tool.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "minLength": 1,
          "description": "Explanation of the tool’s purpose supplied to the model and callers.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "parametersJsonSchema": {
          "type": "object",
          "additionalProperties": true,
          "description": "JSON Schema object.",
          "x-presence": "message"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional tool metadata (version, category, etc.).",
          "x-presence": "collection"
        },
        "serverId": {
          "type": "string",
          "minLength": 1,
          "description": "Required server identifier. Use `client` as the conventional value for client-side tools; those tools are matched by name, not by server.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tool categorization tags.",
          "x-presence": "collection"
        },
        "documentationUrl": {
          "type": "string",
          "description": "Link to detailed documentation.",
          "x-presence": "implicit"
        },
        "outputJsonSchema": {
          "type": "object",
          "additionalProperties": true,
          "description": "Optional output schema (JSON Schema serialized as string) describing structured results",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "ToolDefinition",
        "url": "/api/models/schema-1gomaj79cc#request"
      },
      "x-request-required": [
        "name",
        "description",
        "serverId"
      ],
      "required": [
        "name",
        "description",
        "serverId"
      ]
    },
    "llm_v1_common_v1_ToolChoiceInput": {
      "type": "object",
      "description": "Policy selecting automatic tool choice, no tool use, or a named tool.",
      "properties": {
        "kind": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "TOOL_CHOICE_KIND_AUTO",
                "TOOL_CHOICE_KIND_NONE",
                "TOOL_CHOICE_KIND_SPECIFIC"
              ],
              "x-enumDescriptions": {
                "TOOL_CHOICE_KIND_AUTO": "Let the provider decide whether to call an available tool.\n\nprovider decides (default)",
                "TOOL_CHOICE_KIND_NONE": "Disable tool selection for this generation.\n\ndisable tools",
                "TOOL_CHOICE_KIND_SPECIFIC": "Require the named tool specified by the enclosing tool-choice configuration.\n\nforce a specific tool by name"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "TOOL_CHOICE_KIND_AUTO",
              "number": 0,
              "canonical": true,
              "description": "Let the provider decide whether to call an available tool.\n\nprovider decides (default)"
            },
            {
              "name": "TOOL_CHOICE_KIND_NONE",
              "number": 1,
              "canonical": true,
              "description": "Disable tool selection for this generation.\n\ndisable tools"
            },
            {
              "name": "TOOL_CHOICE_KIND_SPECIFIC",
              "number": 2,
              "canonical": true,
              "description": "Require the named tool specified by the enclosing tool-choice configuration.\n\nforce a specific tool by name"
            }
          ],
          "x-enum-description": "How the model provider should choose whether and which tool to call.",
          "description": "Discriminator selecting the representation or policy used by this message.",
          "x-presence": "explicit"
        },
        "specificToolName": {
          "type": "string",
          "description": "Only used when kind = TOOL\\_CHOICE\\_KIND\\_SPECIFIC.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ToolChoice",
        "url": "/api/models/schema-1gmq0e4ilg#request"
      }
    },
    "llm_v1_common_v1_ToolExecutionPolicyInput": {
      "type": "object",
      "description": "Per-run policy for approvals, MCP execution concurrency, admitted tool-call budget and answer windows. Some stored controls are not enforced by the current workflow.\n\nIf an expected approval does not appear, inspect the tool/server require rules and auto-approve exceptions. Auto-approve takes precedence; server IDs are compared case-insensitively after trimming whitespace. An exception does not establish that the user reviewed the action.\n\nAn omitted or zero [`approvalTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-approvaltimeoutms) waits five minutes. At expiry, [`failOnApprovalTimeoutToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-failonapprovaltimeouttoolnamepatterns) yields `FAILED` for matching calls and `TIMED_OUT` for others; an unset list makes every expiry `FAILED`.\n\nThe retry controls [`retriableToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-retriabletoolnamepatterns), [`retryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-retryableerrorsubstrings), [`nonRetryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-nonretryableerrorsubstrings), [`maxRetries`](/api/models/schema-1h2ji21uc4#request-field-maxretries) and [`retryBackoff`](/api/models/schema-1h2ji21uc4#request-field-retrybackoff) are stored but do not schedule retries. Ordering rules, tie-breaking, the per-loop call cap, client-tool scheduling mode, failure mode and stop-on-failure rules are also not enforced; do not rely on them as execution or safety controls.\n\n[`maxTotalToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxtotaltoolcalls) limits admitted calls across the run; zero or omission leaves the cap unset. A client call consumes budget when armed. A routable MCP call consumes budget before approval, including when held for approval or later rejected. Unknown tools and calls refused because the cap is already exhausted do not consume budget. Further calls at the limit receive `FAILED` tool results naming the limit, which the model can use when continuing the run.\n\n[`maxParallelToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxparalleltoolcalls) limits concurrent MCP execution. Zero or one runs MCP calls sequentially; values greater than one permit concurrency. Client calls are armed separately, and your application controls their execution concurrency.\n\nChoose [`clientToolTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-clienttooltimeoutms) for your application's validation and action. Zero or omission gives a five-minute answer window; there is no unbounded setting. Each call returns its resolved [`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat).\n\nSee [Tool execution policies](/api/tool-execution/policies) for policy selection and caller reconciliation.",
      "properties": {
        "requireApprovalToolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tool-name patterns selecting calls that require an approval decision.",
          "x-presence": "collection"
        },
        "requireApprovalServerIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "MCP server identifiers whose calls require approval. IDs are compared case-insensitively after trimming whitespace.",
          "x-presence": "collection"
        },
        "autoApproveToolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tool-name patterns whose matching calls may be approved automatically.",
          "x-presence": "collection"
        },
        "autoApproveServerIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "MCP server identifiers exempted from approval require rules. IDs are compared case-insensitively after trimming whitespace.",
          "x-presence": "collection"
        },
        "approvalMode": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "APPROVAL_MODE_MIXED",
                "APPROVAL_MODE_BLOCK_ALL"
              ],
              "x-enumDescriptions": {
                "APPROVAL_MODE_MIXED": "Run automatically approved calls immediately and hold only calls that require approval.\n\nRun auto-approved tool calls immediately; hold only those requiring approval.",
                "APPROVAL_MODE_BLOCK_ALL": "Hold execution of all tool calls in the loop until the approval-required calls are approved or rejected.\n\nBlock execution of all tool calls in the loop until all approval-required calls are approved/rejected."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "APPROVAL_MODE_MIXED",
              "number": 0,
              "canonical": true,
              "description": "Run automatically approved calls immediately and hold only calls that require approval.\n\nRun auto-approved tool calls immediately; hold only those requiring approval."
            },
            {
              "name": "APPROVAL_MODE_BLOCK_ALL",
              "number": 1,
              "canonical": true,
              "description": "Hold execution of all tool calls in the loop until the approval-required calls are approved or rejected.\n\nBlock execution of all tool calls in the loop until all approval-required calls are approved/rejected."
            }
          ],
          "x-enum-description": "How approval-required tool calls affect other tool calls in the same execution loop.",
          "description": "How to schedule execution when approvals are required for some tools\n\ndefault: APPROVAL\\_MODE\\_MIXED",
          "x-presence": "explicit"
        },
        "clientToolMode": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "CLIENT_TOOL_MODE_MIXED",
                "CLIENT_TOOL_MODE_BLOCK_ALL"
              ],
              "x-enumDescriptions": {
                "CLIENT_TOOL_MODE_MIXED": "Record pending client tools and continue with server-executed MCP tools and the loop.\n\nDo not wait on client tools; record pending and continue executing MCP tools and loop",
                "CLIENT_TOOL_MODE_BLOCK_ALL": "Hold loop advancement until the caller submits results for all pending client tools.\n\nBlock loop advancement until all client-side tool calls are resolved by the client"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "CLIENT_TOOL_MODE_MIXED",
              "number": 0,
              "canonical": true,
              "description": "Record pending client tools and continue with server-executed MCP tools and the loop.\n\nDo not wait on client tools; record pending and continue executing MCP tools and loop"
            },
            {
              "name": "CLIENT_TOOL_MODE_BLOCK_ALL",
              "number": 1,
              "canonical": true,
              "description": "Hold loop advancement until the caller submits results for all pending client tools.\n\nBlock loop advancement until all client-side tool calls are resolved by the client"
            }
          ],
          "x-enum-description": "How unresolved caller-executed tools affect progression of the tool loop.",
          "description": "Stored requested client-tool scheduling mode; not enforced by the current workflow.\n\ndefault: CLIENT\\_TOOL\\_MODE\\_MIXED",
          "x-presence": "explicit"
        },
        "approvalTimeoutMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Time allowed for an approval decision, in milliseconds. Zero or omission selects the five-minute default; a positive value overrides it. There is no unbounded wait setting. At expiry, matching fail\\_on\\_approval\\_timeout\\_tool\\_name\\_patterns produces FAILED; other calls become TIMED\\_OUT. An empty pattern list makes every expiry FAILED.",
          "x-presence": "implicit"
        },
        "failOnApprovalTimeoutToolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Selects approval timeouts reported as FAILED; nonmatching calls become TIMED\\_OUT. An empty list makes every approval expiry FAILED. Global failure\\_mode is not enforced.",
          "x-presence": "collection"
        },
        "orderRules": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolExecutionOrderRuleInput"
          },
          "description": "Stored requested ordering rules; not applied by the current generation workflow.",
          "x-presence": "collection"
        },
        "stableSortByCallIndexOnTie": {
          "type": "boolean",
          "description": "Stored requested ordering tie-breaker; not applied by the current generation workflow.",
          "x-presence": "implicit"
        },
        "maxParallelToolCalls": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum concurrent MCP tool executions. Zero, omission or one runs MCP calls sequentially; larger values permit concurrency. Client calls are armed separately, and their execution concurrency is controlled by the caller application.",
          "x-presence": "implicit"
        },
        "maxToolCallsPerLoop": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Stored requested per-loop tool-call cap; not enforced by the current generation workflow.\n\n0 = no cap",
          "x-presence": "implicit"
        },
        "maxTotalToolCalls": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum admitted tool calls across the run; zero or omission leaves the cap unset. Client calls count when armed. Routable MCP calls count before approval, including calls later rejected. Unknown tools and calls refused by an exhausted cap do not count.",
          "x-presence": "implicit"
        },
        "retriableToolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Stored requested retry selection; does not enable retries in the current workflow.",
          "x-presence": "collection"
        },
        "maxRetries": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Stored requested retry count; does not enable retries in the current workflow.\n\nper tool-call",
          "x-presence": "implicit"
        },
        "retryBackoff": {
          "description": "Stored requested retry delays; not applied by the current generation workflow.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_BackoffInput"
            }
          ]
        },
        "retryableErrorSubstrings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Stored requested retryable-error selection; not evaluated by the current workflow.",
          "x-presence": "collection"
        },
        "nonRetryableErrorSubstrings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Stored requested retry exclusions; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        },
        "timeouts": {
          "description": "Overall execution time budget for the generation run.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_TimeoutPolicyInput"
            }
          ]
        },
        "clientToolTimeoutMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Time allowed for a client-side tool result, in milliseconds. Zero or omission selects the five-minute default; a positive value overrides it. There is no unbounded wait. The resolved answer deadline is returned as clientToolDeadlineAt on each call. A result arriving after the deadline is rejected. At expiry, an empty or matching fail\\_on\\_approval\\_timeout\\_tool\\_name\\_patterns list yields FAILED; other calls become TIMED\\_OUT. Expiry closes the answer window and does not cancel a client action already in progress.",
          "x-presence": "implicit"
        },
        "failureMode": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "FAILURE_MODE_CONTINUE",
                "FAILURE_MODE_STOP_LOOP",
                "FAILURE_MODE_STOP_RUN"
              ],
              "x-enumDescriptions": {
                "FAILURE_MODE_CONTINUE": "Request continued processing after the failed tool call.",
                "FAILURE_MODE_STOP_LOOP": "Request stopping the current tool-execution loop after the failure.",
                "FAILURE_MODE_STOP_RUN": "Request stopping the generation run after the failure."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "FAILURE_MODE_CONTINUE",
              "number": 0,
              "canonical": true,
              "description": "Request continued processing after the failed tool call."
            },
            {
              "name": "FAILURE_MODE_STOP_LOOP",
              "number": 1,
              "canonical": true,
              "description": "Request stopping the current tool-execution loop after the failure."
            },
            {
              "name": "FAILURE_MODE_STOP_RUN",
              "number": 2,
              "canonical": true,
              "description": "Request stopping the generation run after the failure."
            }
          ],
          "x-enum-description": "Requested scope of stopping after a tool execution failure.",
          "description": "Stored requested failure action; not enforced by the current generation workflow.\n\ndefault if no rule matches",
          "x-presence": "explicit"
        },
        "stopOnFailureRules": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_StopOnFailureRuleInput"
          },
          "description": "Stored requested stop rules; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "ToolExecutionPolicy",
        "url": "/api/models/schema-1h2ji21uc4#request"
      }
    },
    "llm_v1_common_v1_ToolExecutionOrderRuleInput": {
      "type": "object",
      "description": "Per-run requested ordering rule for tool execution. The current generation workflow stores these rules but does not apply their patterns, server filters or weights.",
      "properties": {
        "toolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requested tool-name patterns; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        },
        "serverIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional requested MCP server filter; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        },
        "weight": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested ordering weight; not applied by the current generation workflow.\n\nlower executes first",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ToolExecutionOrderRule",
        "url": "/api/models/schema-1h0coqd8e8#request"
      }
    },
    "llm_v1_common_v1_BackoffInput": {
      "type": "object",
      "description": "Requested initial delay, growth factor and upper bound for tool-call retries. The current generation workflow stores this configuration but does not schedule retries from it.",
      "properties": {
        "initialMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested initial retry delay in milliseconds; not applied by the current generation workflow.\n\ne.g., 200",
          "x-presence": "implicit"
        },
        "multiplier": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Requested retry-delay multiplier; not applied by the current generation workflow.\n\ne.g., 2.0",
          "x-presence": "implicit"
        },
        "maxMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum retry delay in milliseconds; not applied by the current generation workflow.\n\ne.g., 2000",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Backoff",
        "url": "/api/models/schema-1gqlghlp0v#request"
      }
    },
    "llm_v1_common_v1_TimeoutPolicyInput": {
      "type": "object",
      "description": "Bounds the run as a whole. This message has no per-tool or per-loop execution timeout. Approval and client-result answer windows are configured separately on ToolExecutionPolicy; those waits do not cancel an already dispatched remote action.\n\nSet a finite [`timeouts.overallMs`](/api/models/schema-1gu5od417l#request-field-overallms) when the task needs a duration limit. It is measured from run start; zero or omission leaves the run-level duration unbounded.\n\nWhen Travila observes that the budget has elapsed, the run can end `TIMED_OUT` and pending calls can be closed with `endReason: \"run_timed_out\"`. A call still awaiting approval has not been dispatched. The timeout does not guarantee a remote action stops at that instant, establish whether it took effect, or roll it back.\n\nUse [`endReason`](/api/models/schema-1it6mqsqoo#response-field-endreason) to distinguish a run deadline from a call's own answer window: an unanswered approval reads `approval_timeout`, and an unanswered client tool reads `client_timeout`. Read the actual tool status too; approval and client-tool expiry can produce `FAILED` or `TIMED_OUT`. Run and individual tool outcomes are different fields.",
      "properties": {
        "overallMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Overall run budget in milliseconds, measured from run start. Zero or omission leaves this run-level bound unset. The workflow checks the deadline and can end with AGENT\\_STATUS\\_TIMED\\_OUT; it cannot cancel or undo a remote action already dispatched. Approval and client-result waits retain their separate finite limits.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TimeoutPolicy",
        "url": "/api/models/schema-1gu5od417l#request"
      }
    },
    "llm_v1_common_v1_StopOnFailureRuleInput": {
      "type": "object",
      "description": "Requested tool-selection rule for handling an execution failure. The current generation workflow stores these rules but does not evaluate them or stop a loop or run because of them.\n\nThe conditions in [`stopOnFailureRules`](/api/models/schema-1h2ji21uc4#request-field-stoponfailurerules), including [`priority`](/api/models/schema-1gstrgb39r#request-field-priority), timeout inclusion and error matching, are not enforced. Do not rely on these fields as a stop control.",
      "properties": {
        "toolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requested tool-name selection; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        },
        "serverIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requested MCP server selection; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        },
        "onFailure": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "FAILURE_MODE_CONTINUE",
                "FAILURE_MODE_STOP_LOOP",
                "FAILURE_MODE_STOP_RUN"
              ],
              "x-enumDescriptions": {
                "FAILURE_MODE_CONTINUE": "Request continued processing after the failed tool call.",
                "FAILURE_MODE_STOP_LOOP": "Request stopping the current tool-execution loop after the failure.",
                "FAILURE_MODE_STOP_RUN": "Request stopping the generation run after the failure."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "FAILURE_MODE_CONTINUE",
              "number": 0,
              "canonical": true,
              "description": "Request continued processing after the failed tool call."
            },
            {
              "name": "FAILURE_MODE_STOP_LOOP",
              "number": 1,
              "canonical": true,
              "description": "Request stopping the current tool-execution loop after the failure."
            },
            {
              "name": "FAILURE_MODE_STOP_RUN",
              "number": 2,
              "canonical": true,
              "description": "Request stopping the generation run after the failure."
            }
          ],
          "x-enum-description": "Requested scope of stopping after a tool execution failure.",
          "description": "Requested failure action; not evaluated by the current generation workflow.\n\nSTOP\\_LOOP or STOP\\_RUN",
          "x-presence": "explicit"
        },
        "includeTimeouts": {
          "type": "boolean",
          "description": "Requested inclusion of timeouts as failures; not evaluated by the current generation workflow.\n\ntreat timeouts as failure for this rule",
          "x-presence": "implicit"
        },
        "errorSubstrings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requested error-text selection; not evaluated by the current generation workflow.\n\nonly stop if error matches",
          "x-presence": "collection"
        },
        "priority": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested rule priority; not evaluated by the current generation workflow.\n\nlower evaluated first",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "StopOnFailureRule",
        "url": "/api/models/schema-1gstrgb39r#request"
      }
    },
    "llm_v1_common_v1_GenerationConfig_ResponseFormatInput": {
      "type": "object",
      "description": "Structured response control\n\nWhen a schema is set, current server validation defaults to enabled unless explicitly disabled. An explicit retry count of zero disables validation retries; omission defaults to one. A retry can incur another model attempt and cost. A schema name is a label, not an immutable schema version.",
      "properties": {
        "jsonObject": {
          "type": "boolean",
          "description": "Whether the model provider is requested to return a valid JSON object.\n\nenforce valid JSON object",
          "x-presence": "implicit"
        },
        "jsonSchema": {
          "type": "object",
          "additionalProperties": true,
          "description": "JSON Schema describing the requested structured model output.\n\noptional JSON Schema (draft-07+)",
          "x-presence": "message"
        },
        "schemaName": {
          "type": "string",
          "description": "Human-readable name of the structured-output schema, included in structured-message metadata and in the provider request’s json\\_schema.name.",
          "x-presence": "implicit"
        },
        "validate": {
          "type": "boolean",
          "description": "Enable server-side validation of the response against json\\_schema. Default: true when json\\_schema is set (applied in Go when not explicitly set).",
          "x-presence": "explicit"
        },
        "maxValidationRetries": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum retries when server-side validation fails. Default: 1 when not set. Set to 0 to disable retry (fail immediately on invalid output).",
          "x-presence": "explicit",
          "x-protovalidate": {
            "int64": {
              "lte": "3",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "responseHealing": {
          "type": "boolean",
          "description": "Enable response healing for structured JSON output. Defaults to enabled for non-streaming requests with json\\_schema unless explicitly disabled.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "ResponseFormat",
        "url": "/api/models/schema-1g69v4vltg#request"
      }
    },
    "llm_v1_common_v1_GenerationConfig_PluginConfigInput": {
      "type": "object",
      "description": "Provider plugin identifier and its parser, search, or additional configuration.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Provider plugin identifier, such as file-parser.\n\ne.g., \"file-parser\"",
          "x-presence": "implicit"
        },
        "pdf": {
          "description": "PDF annotation or parser configuration selected by the enclosing message.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig_PluginPDFConfigInput"
            }
          ]
        },
        "web": {
          "description": "Web-search configuration for the selected generation plugin.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig_PluginWebConfigInput"
            }
          ]
        },
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional provider-specific plugin parameters.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "PluginConfig",
        "url": "/api/models/schema-1g5jvg1icc#request"
      }
    },
    "llm_v1_common_v1_GenerationConfig_PluginPDFConfigInput": {
      "type": "object",
      "description": "Plugins for pre/post-processing (generic representation)",
      "properties": {
        "engine": {
          "type": "string",
          "description": "PDF parsing engine selected for the provider plugin.\n\n\"pdf-text\", \"mistral-ocr\", or \"native\"",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PluginPDFConfig",
        "url": "/api/models/schema-1fvi4j1t0d#request"
      }
    },
    "llm_v1_common_v1_GenerationConfig_PluginWebConfigInput": {
      "type": "object",
      "description": "Provider web-search configuration used to augment a generation request.",
      "properties": {
        "engine": {
          "type": "string",
          "description": "Search engine selected for the provider’s web-search plugin.\n\ne.g., native/exa",
          "x-presence": "implicit"
        },
        "maxResults": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum web-search result count requested by the plugin.",
          "x-presence": "implicit"
        },
        "searchPrompt": {
          "type": "string",
          "description": "Instructions supplied to the web-search plugin.",
          "x-presence": "implicit"
        },
        "webSearchOptions": {
          "description": "Options controlling the amount of web-search context requested.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig_PluginWebConfig_WebSearchOptionsInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "PluginWebConfig",
        "url": "/api/models/schema-1g3q0m5uun#request"
      }
    },
    "llm_v1_common_v1_GenerationConfig_PluginWebConfig_WebSearchOptionsInput": {
      "type": "object",
      "description": "Amount of web-search context requested for generation.",
      "properties": {
        "searchContextSize": {
          "type": "string",
          "description": "Requested amount of web-search context: low, medium, or high.\n\n\"low\" | \"medium\" | \"high\"",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "WebSearchOptions",
        "url": "/api/models/schema-1g1r4lmi7m#request"
      }
    },
    "llm_v1_common_v1_TimeAwareConfigInput": {
      "type": "object",
      "description": "Configuration for time-aware LLM generation. Controls injection of temporal context (current time, message timestamps, file timestamps) into the LLM context during generation.\n\ninclude\\_message\\_timestamps and include\\_file\\_timestamps default to false. The timezone is an IANA timezone name and defaults to UTC.\n\ntimestamp\\_format accepts empty text, friendly, iso8601 or date\\_only. The default friendly format includes a human-readable date, time and zone; iso8601 uses an ISO timestamp, and date\\_only includes only the date. An unrecognized value uses friendly formatting.",
      "properties": {
        "includeCurrentTime": {
          "type": "boolean",
          "description": "When enabled, include the current date and time in the per-turn volatile context attached to the current user message, using the configured timezone and timestamp format.",
          "x-presence": "implicit"
        },
        "includeMessageTimestamps": {
          "type": "boolean",
          "description": "Include timestamps on messages in the model context to provide chronological context. Requires the message timestamp to be populated. Default: false.",
          "x-presence": "implicit"
        },
        "includeFileTimestamps": {
          "type": "boolean",
          "description": "Include upload/modification timestamps when resolving FILE\\_ID content. When true, resolved file references include \"\\[Uploaded: \\<timestamp>]\" annotations. Default: false",
          "x-presence": "implicit"
        },
        "timezone": {
          "type": "string",
          "maxLength": 50,
          "description": "Timezone for formatting (IANA format, e.g., \"America/Los\\_Angeles\"). Default: \"UTC\"",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "50"
            }
          },
          "x-validation-scope": "request"
        },
        "timestampFormat": {
          "type": "string",
          "maxLength": 50,
          "enum": [
            "",
            "friendly",
            "iso8601",
            "date_only"
          ],
          "description": "Format pattern for timestamps. \"friendly\" (default): \"Jan 2, 2026 at 3:04 PM MST\" \"iso8601\": \"2026-01-02T15:04:00-08:00\" \"date\\_only\": \"2026-01-02\"",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "50",
              "in": [
                "",
                "friendly",
                "iso8601",
                "date_only"
              ]
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-reference-model": {
        "title": "TimeAwareConfig",
        "url": "/api/models/schema-1gkqaobt3t#request"
      }
    },
    "llm_v1_common_v1_TurnContextConfigInput": {
      "type": "object",
      "description": "Configuration for turn-aware LLM generation\n\nTurn context tells the model the current generation number and remaining allowance, with tool guidance based on that allowance. This annotation is enabled by default and is not persisted in message history. Its presentation options belong in the [generation configuration reference](/api/conversations/update-default-generation-config); the annotation itself does not change the run limit.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable turn context injection into system prompt Default: true",
          "x-presence": "implicit"
        },
        "includeToolGuidance": {
          "type": "boolean",
          "description": "Include tool usage guidance based on remaining turns Default: false (can enable for agentic workflows)",
          "x-presence": "implicit"
        },
        "format": {
          "type": "string",
          "enum": [
            "minimal",
            "standard",
            "verbose"
          ],
          "description": "Format for turn context \"minimal\": \"\\[Turn 2/5]\" \"standard\": \"\\[Turn 2 of 5 - 3 turns remaining. Plan your response accordingly.]\" \"verbose\": Includes detailed behavioral guidance Default: \"standard\"",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "in": [
                "minimal",
                "standard",
                "verbose"
              ]
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-reference-model": {
        "title": "TurnContextConfig",
        "url": "/api/models/schema-1h5dj58uph#request"
      },
      "x-request-required": [
        "format"
      ],
      "required": [
        "format"
      ]
    },
    "llm_v1_common_v1_Mem0ConfigInput": {
      "type": "object",
      "description": "Configuration for searching, injecting and storing semantic memories during generation. Configure memory integration in the mem0 block of the conversation defaultGenerationConfig or in a per-turn overrideGenerationConfig.\n\nEnabled integration provides retrieval and asynchronous extraction. Retrieved context is added to the latest user message despite the injectAsSystemContext name. addMemoriesAsync is ignored: extraction runs after the run, without an option to delay the send response until extraction completes.\n\nReranking and graph relationships require deployment support; their flags do not establish that support or a complete relationship-removal procedure. exposeAsMcpTool has no effect. Use search-memories from the application or enable automatic retrieval with mem0.enabled; the flag alone does not give the model a new tool.\n\nWhen memory is enabled, search\\_top\\_k selects 1–50 results; search\\_threshold selects a relevance score from 0.0 to 1.0. The generation retrieval limit bounds injected context; the separate user-facing memory-search operation allows up to 100 results.\n\ncustom\\_extraction\\_prompt selects a custom extraction prompt when nonempty; otherwise the default prompt is used. agent\\_id\\_override changes the conversation-based memory scope so memories can be shared across conversations. include\\_assistant\\_messages controls assistant/agent-scoped memories and defaults to false. inject\\_memory\\_timestamps defaults to true and includes remembered and, when available, updated dates.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable searching for relevant memories, adding them to generation context and extracting new memories after generation. Default: false.",
          "x-presence": "implicit"
        },
        "searchTopK": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of memories to retrieve during search. Higher values provide more context but increase token usage.\n\nThe generation retrieval limit is 50 because retrieved memories can be included in the volatile context attached to the current turn’s user message. This is a token-budget guard rather than a hard limit of the memory store. The separate user-facing memory-search request allows up to 100 results.\n\nRange: 1–50 when memory is enabled.",
          "x-presence": "implicit"
        },
        "searchThreshold": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Minimum relevance score threshold for memory search results. Memories below this threshold are filtered out. Range: 0.0-1.0 (validated only when enabled = true)",
          "x-presence": "implicit"
        },
        "injectAsSystemContext": {
          "type": "boolean",
          "description": "When true, include retrieved memories in the per-turn volatile context attached to the current user message. Memories are formatted as a bullet list under a \"\\[Relevant memories about this user:]\" header. When false, retrieved memories are not included in the model context.",
          "x-presence": "implicit"
        },
        "searchQueryOverride": {
          "type": "string",
          "description": "Custom search query to use instead of the last user message. If empty, the last user message content is used as the search query.",
          "x-presence": "implicit"
        },
        "enableRerank": {
          "type": "boolean",
          "description": "Request reranking to improve search relevance. It may improve results and add latency, and requires deployment support. Default: false.",
          "x-presence": "implicit"
        },
        "addMemoriesAsync": {
          "type": "boolean",
          "description": "This field is accepted but does not change extraction behavior. When memory integration is enabled, extraction runs asynchronously after generation, including when this value is false. It does not make the send response wait for extraction to complete.",
          "x-presence": "implicit"
        },
        "customExtractionPrompt": {
          "type": "string",
          "description": "Custom prompt for memory/fact extraction. If empty, the default extraction prompt is used. Use this to customize what types of facts are extracted.",
          "x-presence": "implicit"
        },
        "enableGraph": {
          "type": "boolean",
          "description": "Enable relationship extraction and graph-based memory search when graph memory is configured. Default: false.",
          "x-presence": "implicit"
        },
        "agentIdOverride": {
          "type": "string",
          "description": "Override the agent\\_id used for memory scoping. By default, the conversation\\_id is used as the agent\\_id. Use this to share memories across multiple conversations.",
          "x-presence": "implicit"
        },
        "exposeAsMcpTool": {
          "type": "boolean",
          "description": "This flag is currently ignored. It does not expose memory search as a model tool. Default: false.",
          "x-presence": "implicit"
        },
        "includeAssistantMessages": {
          "type": "boolean",
          "description": "Include assistant/agent-scoped memories in operations. When false, skips agent\\_id for both add and search operations, keeping only user-scoped memories. Default: false",
          "x-presence": "implicit"
        },
        "injectMemoryTimestamps": {
          "type": "boolean",
          "description": "Include created\\_at/updated\\_at timestamps on injected memories. When true, each memory bullet includes a \"(remembered: \\<date>)\" annotation and optionally \"(updated: \\<date>)\" if the memory was modified after creation. Default: true",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "MemoryConfig",
        "url": "/api/models/schema-1g8iadjcu1#request"
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.gate.enabled",
            "message": "search_top_k and search_threshold must be valid when enabled is true",
            "expression": "!this.enabled || ((this.search_top_k >= 1 && this.search_top_k <= 50) && (this.search_threshold >= 0.0 && this.search_threshold <= 1.0))"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "llm_v1_common_v1_FileResolutionConfigInput": {
      "type": "object",
      "description": "Configuration for resolving CONTENT\\_PART\\_TYPE\\_FILE\\_ID parts to fresh signed URLs before requests are sent to LLM providers. Keeps stable file references in message history while generating ephemeral URLs only when needed.\n\nOmitting the file-resolution failure mode uses `FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT`, which silently drops an unresolvable part. A resolved URL can also expire before a later attempt; a fresh URL on every attempt is not guaranteed. With `FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION`, an unresolvable required part fails the run before the provider call. This can happen after asynchronous send acceptance; inspect the correlated run outcome rather than expecting the initial HTTP response to report the later failure. Verify that the report was actually available before presenting its summary.",
      "properties": {
        "failureMode": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION",
                "FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT"
              ],
              "x-enumDescriptions": {
                "FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION": "Fail generation when a file content part cannot be resolved.\n\nFail the entire generation if any file resolution fails.",
                "FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT": "Skip the unresolved content part and continue with the remaining content.\n\nSkip failed content parts and proceed with available content (graceful degradation)."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION",
              "number": 0,
              "canonical": true,
              "description": "Fail generation when a file content part cannot be resolved.\n\nFail the entire generation if any file resolution fails."
            },
            {
              "name": "FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT",
              "number": 1,
              "canonical": true,
              "description": "Skip the unresolved content part and continue with the remaining content.\n\nSkip failed content parts and proceed with available content (graceful degradation)."
            }
          ],
          "x-enum-description": "How generation handles a content part whose file identifier cannot be resolved.",
          "description": "Action to take when a file cannot be resolved. If omitted, skip unresolved file content and use the remaining content.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "FileResolutionConfig",
        "url": "/api/models/schema-1ftcunpmha#request"
      }
    },
    "llm_v1_common_v1_MCPServerReferenceInput": {
      "type": "object",
      "description": "MCP Server Reference Lightweight reference to pre-configured MCP servers used by workflows",
      "properties": {
        "serverId": {
          "type": "string",
          "minLength": 1,
          "description": "ID of pre-configured MCP server (e.g., \"github\", \"filesystem\").",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether to use this MCP server. Omission means enabled; only an explicitly false value excludes it from discovery.",
          "x-presence": "explicit"
        },
        "priority": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Priority override for tool selection (higher = preferred).",
          "x-presence": "implicit"
        },
        "allowlistToolPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only include tools matching these patterns (e.g., \"github\\_get\\_*\", \"search\\_*\").",
          "x-presence": "collection"
        },
        "blocklistToolPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Exclude tools matching these patterns (e.g., \"*\\_delete\", \"*\\_destroy\").",
          "x-presence": "collection"
        },
        "serverOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Override server settings for this usage.",
          "x-presence": "collection"
        },
        "deferTools": {
          "type": "boolean",
          "description": "Whether this server's tools are deferred. A deferred tool is left out of the model's tool list until the run's tool search loads it. Omission or false declares every tool up front.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "MCPServerReference",
        "url": "/api/models/schema-1hik90rmo1#request"
      },
      "x-request-required": [
        "serverId"
      ],
      "required": [
        "serverId"
      ]
    },
    "llm_v1_common_v1_PromptVariableSpecInput": {
      "type": "object",
      "description": "Declares a variable used by a profile’s system-prompt template. Values are supplied through the conversation’s prompt\\_variables.\n\nWhen creating a conversation with an explicitly selected profile, a variable\\_specs entry with required set to true and no nonempty default\\_value causes MISSING\\_REQUIRED\\_PROMPT\\_VARIABLES if the variable is missing. Supply its value at creation; this validation is not repeated for each send or queued turn.\n\nSet intended values explicitly even when the specification declares a default. A nonempty default\\_value suppresses the creation-time missing-required error but is not automatically inserted into the rendered prompt.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Variable name referenced by the profile’s system-prompt template.\n\ne.g. \"user\\_name\" → substituted for \\{\\{.user\\_name}}",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Console hint + caller documentation.",
          "x-presence": "implicit"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a value is required for a profile explicitly selected at conversation creation. This validation does not run for every send or queued turn.",
          "x-presence": "implicit"
        },
        "defaultValue": {
          "type": "string",
          "description": "A nonempty default value suppresses the creation-time missing-required error. It is not automatically inserted into the rendered prompt; supply intended values explicitly.",
          "x-presence": "implicit"
        },
        "type": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "VAR_TYPE_STRING",
                "VAR_TYPE_NUMBER",
                "VAR_TYPE_BOOL",
                "VAR_TYPE_LIST"
              ],
              "x-enumDescriptions": {
                "VAR_TYPE_STRING": "Treat the variable as text in the template context.",
                "VAR_TYPE_NUMBER": "Coerce the variable to a numeric value for arithmetic or numeric comparisons.\n\nfloat64 in the template context (gt/lt/ge…)",
                "VAR_TYPE_BOOL": "Coerce the variable to a boolean for template conditions.\n\ntruthiness in \\{\\{if …}}",
                "VAR_TYPE_LIST": "Provide a list that templates can iterate or join.\n\n\\[]interface\\{} — joinable, rangeable"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "VAR_TYPE_STRING",
              "number": 0,
              "canonical": true,
              "description": "Treat the variable as text in the template context."
            },
            {
              "name": "VAR_TYPE_NUMBER",
              "number": 1,
              "canonical": true,
              "description": "Coerce the variable to a numeric value for arithmetic or numeric comparisons.\n\nfloat64 in the template context (gt/lt/ge…)"
            },
            {
              "name": "VAR_TYPE_BOOL",
              "number": 2,
              "canonical": true,
              "description": "Coerce the variable to a boolean for template conditions.\n\ntruthiness in \\{\\{if …}}"
            },
            {
              "name": "VAR_TYPE_LIST",
              "number": 3,
              "canonical": true,
              "description": "Provide a list that templates can iterate or join.\n\n\\[]interface\\{} — joinable, rangeable"
            }
          ],
          "x-enum-description": "Type used to coerce a prompt variable before placing it in the template context. It determines creation-time validation, the authoring control, and how comparisons and joining values behave.",
          "description": "Optional runtime type for this variable in the template engine.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "PromptVariableSpec",
        "url": "/api/models/schema-1hkadmq6cl#request"
      }
    },
    "llm_v1_services_agent_profile_v1_CreateAgentProfileResponse": {
      "type": "object",
      "description": "Result payload for creating a project-scoped agent profile with prompt and generation settings.",
      "properties": {
        "profile": {
          "description": "Echoes the stored profile.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_AgentProfile"
            }
          ]
        }
      }
    },
    "llm_v1_common_v1_AgentProfile": {
      "type": "object",
      "description": "A reusable persona with model configuration, tools and metadata describing when it should be selected. See the profile-selection and versioning guide for profile resolution and fragment versions.",
      "properties": {
        "profileId": {
          "type": "string",
          "description": "Stable id, unique within the project library.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name used when selecting an agent profile.\n\ne.g. \"Nutrition Coach\"",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-facing summary.",
          "x-presence": "implicit"
        },
        "whenToUse": {
          "type": "string",
          "description": "Routing hint, Skill-style \"use when…\"",
          "x-presence": "implicit"
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Keywords associated with discovery or selection of the agent profile.",
          "x-presence": "collection"
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether the profile is enabled for selection. Omission during creation defaults to true; an explicitly false value creates a disabled profile. Disabled profiles are not selectable.",
          "x-presence": "explicit"
        },
        "generationConfig": {
          "description": "Model, sampling, and tool configuration used for generation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig"
            }
          ]
        },
        "mcpServers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerReference"
          },
          "description": "MCP servers used for tool discovery when this profile is active. This list replaces the conversation-wide MCP server list for those turns.",
          "x-presence": "collection"
        },
        "variableSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_PromptVariableSpec"
          },
          "description": "Variables consumed by the profile’s system-prompt template, rendered from the conversation’s prompt\\_variables.",
          "x-presence": "collection"
        },
        "version": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Output-only immutable revision of the profile. Versions start at one and increase on successful mutations; values supplied on writes are ignored.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "AgentProfile",
        "url": "/api/models/schema-1hmbcecg1j#response"
      }
    },
    "llm_v1_common_v1_GenerationConfig": {
      "type": "object",
      "description": "Canonical generation configuration\n\nSet the language preference to a BCP-47 tag (for example, `\"fr\"` or `\"pt-BR\"`). The platform injects a `\"Respond only in [language]\"` instruction into **every** LLM call for this conversation. The instruction is not persisted to history.\n\nSee [Generation configuration](/api/model-controls/configuration) for how settings combine across scopes.",
      "properties": {
        "model": {
          "type": "string",
          "description": "Primary model identifier requested for generation.",
          "x-presence": "implicit"
        },
        "models": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Candidate models for routing.",
          "x-presence": "collection"
        },
        "systemPrompt": {
          "type": "string",
          "description": "Optional system prompt prepended as a system message. An explicitly empty value in a per-call override clears the base prompt.",
          "x-presence": "explicit"
        },
        "modelRoutingFilter": {
          "description": "Optional metadata-based model routing filter. When set, candidate models are filtered by these criteria before routing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ModelRoutingFilter"
            }
          ]
        },
        "provider": {
          "description": "Provider/multi-provider routing preferences",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ProviderPreferences"
            }
          ]
        },
        "reasoning": {
          "description": "Reasoning effort and output options passed to the model provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ReasoningOptions"
            }
          ]
        },
        "usage": {
          "description": "Token and cost accounting associated with the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_UsageOptions"
            }
          ]
        },
        "transforms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provider transformations requested for the generation input.",
          "x-presence": "collection"
        },
        "tools": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolDefinition"
          },
          "description": "Tool definitions exposed to the model for server-side execution.",
          "x-presence": "collection"
        },
        "toolChoice": {
          "description": "Policy controlling whether and which tool the model may call.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolChoice"
            }
          ]
        },
        "clientTools": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolDefinition"
          },
          "description": "Client-side tools that should be exposed to the model but executed by the client (not the workflow/MCP)",
          "x-presence": "collection"
        },
        "toolPolicy": {
          "description": "Per-run tool execution policy (approvals, ordering, limits, retries, timeouts)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolExecutionPolicy"
            }
          ]
        },
        "temperature": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Sampling temperature, from 0.0 to 2.0. Omission inherits the base configuration or provider default; an explicitly supplied zero remains an override.",
          "x-presence": "explicit"
        },
        "topP": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Cumulative token-probability cutoff used for nucleus sampling, from 0.0 through 1.0.",
          "x-presence": "explicit"
        },
        "maxOutputTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum output-token count requested from the model provider; corresponds to max\\_tokens in provider requests.",
          "x-presence": "explicit"
        },
        "frequencyPenalty": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Sampling penalty applied to tokens according to their prior frequency.",
          "x-presence": "explicit"
        },
        "presencePenalty": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Sampling penalty applied to tokens already present in generated content.",
          "x-presence": "explicit"
        },
        "stopSequences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Token sequences at which the model should stop generation.",
          "x-presence": "collection"
        },
        "seed": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Deterministic control where supported.",
          "x-presence": "explicit"
        },
        "responseFormat": {
          "description": "Structured-output format and schema requested for the model response.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig_ResponseFormat"
            }
          ]
        },
        "allowParallelToolCalls": {
          "type": "boolean",
          "description": "Allow the model to issue multiple tool calls in parallel where supported",
          "x-presence": "explicit"
        },
        "topK": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of candidate next tokens considered by providers that support top-k sampling.",
          "x-presence": "explicit"
        },
        "repetitionPenalty": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Provider sampling penalty used to discourage repeated output.",
          "x-presence": "explicit"
        },
        "logitBias": {
          "type": "object",
          "additionalProperties": {
            "oneOf": [
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string",
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ]
          },
          "description": "Per-token adjustments applied to the provider token-selection logits.",
          "x-presence": "collection"
        },
        "topLogprobs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of top token log probabilities requested from the provider.",
          "x-presence": "explicit"
        },
        "minP": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Minimum relative token probability used by supported sampling providers.",
          "x-presence": "explicit"
        },
        "topA": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Adaptive probability cutoff used by supported sampling providers.",
          "x-presence": "explicit"
        },
        "user": {
          "type": "string",
          "description": "User identifier forwarded for provider-side request attribution.",
          "x-presence": "explicit"
        },
        "modalities": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "MODALITY_TEXT",
                  "MODALITY_IMAGE",
                  "MODALITY_AUDIO"
                ],
                "x-enumDescriptions": {
                  "MODALITY_TEXT": "Request generated text output.",
                  "MODALITY_IMAGE": "Request generated image output where the model supports it.",
                  "MODALITY_AUDIO": "Request generated audio output where the model supports it."
                }
              },
              {
                "type": "integer",
                "format": "int32"
              }
            ],
            "x-enum-values": [
              {
                "name": "MODALITY_TEXT",
                "number": 0,
                "canonical": true,
                "description": "Request generated text output."
              },
              {
                "name": "MODALITY_IMAGE",
                "number": 1,
                "canonical": true,
                "description": "Request generated image output where the model supports it."
              },
              {
                "name": "MODALITY_AUDIO",
                "number": 2,
                "canonical": true,
                "description": "Request generated audio output where the model supports it."
              }
            ],
            "x-enum-description": "Output media requested from a model that supports that modality.",
            "description": "Output media requested from a model that supports that modality."
          },
          "description": "Output modalities (e.g., \\[TEXT, IMAGE])",
          "x-presence": "collection"
        },
        "plugins": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig_PluginConfig"
          },
          "description": "Provider plugins requested for pre-processing or post-processing.",
          "x-presence": "collection"
        },
        "languagePreference": {
          "type": "string",
          "description": "Language preference (BCP-47), e.g., \"en-US\", \"es-ES\" (presence-aware)",
          "x-presence": "explicit",
          "x-protovalidate": {
            "string": {
              "minLen": "2",
              "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
            }
          },
          "x-validation-scope": "request"
        },
        "timeAware": {
          "description": "Time-aware generation options (current time, message timestamps, file timestamps)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_TimeAwareConfig"
            }
          ]
        },
        "turnContext": {
          "description": "Turn context configuration for turn-aware generation",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_TurnContextConfig"
            }
          ]
        },
        "mem0": {
          "description": "Configuration for semantic memory search, context injection and extraction during generation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Mem0Config"
            }
          ]
        },
        "requestTimeoutSeconds": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Timeout for an individual model-provider request, in seconds. Zero selects the 30-second default; other values are clamped to the range 1–600.",
          "x-presence": "implicit"
        },
        "fileResolution": {
          "description": "Configuration for resolving FILE\\_ID content parts to fresh signed URLs before calling a model provider. When unset, unresolved content is skipped.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_FileResolutionConfig"
            }
          ]
        },
        "clearTools": {
          "type": "boolean",
          "description": "Set to true with an empty tools list in an override to clear inherited tools. An empty list alone inherits the base tools. This directive applies only when merging an override.",
          "x-presence": "implicit"
        },
        "clearClientTools": {
          "type": "boolean",
          "description": "Set to true with an empty client tools list in an override to clear inherited client tools for that turn. An empty list alone inherits the base client tools, and a nonempty list replaces them regardless of this directive. It applies only when merging an override and leaves server tool selection unchanged.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "GenerationConfig",
        "url": "/api/models/schema-1h82h7ri5p#response"
      }
    },
    "llm_v1_common_v1_ModelRoutingFilter": {
      "type": "object",
      "description": "ModelRoutingFilter defines metadata-based criteria for filtering model candidates. All filters are ANDed — a model must pass every specified filter.\n\nUnset or zero fields do not filter that dimension. Unknown maximum-output metadata currently passes a minimum-output filter, while an empty modality list fails a required-modality check. A passing metadata check is not proof the provider will honor the eventual request.\n\n[`maxPromptCost`](/api/models/schema-1ga4tjqqg1#request-field-maxpromptcost) and [`maxCompletionCost`](/api/models/schema-1ga4tjqqg1#request-field-maxcompletioncost) compare per-token catalog prices; unknown/unparseable prices currently pass. They do not cap total tokens, tool costs, retries or aggregate provider spend. Before sending paid traffic, confirm which spending limits are actually enforced for your account. Metadata-based capability filters also do not prove that a provider will honor a parameter on the eventual request.",
      "properties": {
        "minContextLength": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Minimum context window (tokens). Models below this are excluded.",
          "x-presence": "implicit"
        },
        "minMaxCompletionTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Minimum max completion tokens. Models below this are excluded. Models reporting 0 (unknown) pass through (permissive).",
          "x-presence": "implicit"
        },
        "requiredInputModalities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required input modalities (e.g., \\[\"image\", \"audio\"]). Model must support ALL listed. Models with empty input\\_modalities are filtered out (strict).",
          "x-presence": "collection"
        },
        "requiredOutputModalities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required output modalities (e.g., \\[\"image\"]). Model must support ALL listed. Models with empty output\\_modalities are filtered out (strict).",
          "x-presence": "collection"
        },
        "maxPromptCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Maximum cost per prompt token (e.g., 0.000003). 0 = no limit. Unparseable pricing strings pass through (permissive).",
          "x-presence": "implicit"
        },
        "maxCompletionCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Maximum cost per completion token. 0 = no limit. Unparseable pricing strings pass through (permissive).",
          "x-presence": "implicit"
        },
        "excludeModerated": {
          "type": "boolean",
          "description": "Exclude models with content moderation enabled.",
          "x-presence": "implicit"
        },
        "requiredParameters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required supported parameters (e.g., \\[\"tools\", \"response\\_format\"]). Model must support ALL listed.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "ModelRoutingFilter",
        "url": "/api/models/schema-1ga4tjqqg1#response"
      }
    },
    "llm_v1_common_v1_ProviderPreferences": {
      "type": "object",
      "description": "Routing preferences restricting and ordering the model providers eligible for a request.",
      "properties": {
        "order": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Preferred ordering of model providers for routing.",
          "x-presence": "collection"
        },
        "allowFallbacks": {
          "type": "boolean",
          "description": "The current chat routing path enables provider fallbacks even when this value is false or omitted. This field cannot disable fallback in that path. Use `only` to restrict eligible providers; confirm the selected providers support the requested model.",
          "x-presence": "implicit"
        },
        "requireParameters": {
          "type": "boolean",
          "description": "Whether routing requires providers to support the requested parameters.",
          "x-presence": "implicit"
        },
        "dataCollection": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "DATA_COLLECTION_MODE_ALLOW",
                "DATA_COLLECTION_MODE_DENY"
              ],
              "x-enumDescriptions": {
                "DATA_COLLECTION_MODE_ALLOW": "Allow routing to providers that may collect submitted data under their policies.",
                "DATA_COLLECTION_MODE_DENY": "Request routing only to providers that do not collect submitted data under the routing policy."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "DATA_COLLECTION_MODE_ALLOW",
              "number": 0,
              "canonical": true,
              "description": "Allow routing to providers that may collect submitted data under their policies."
            },
            {
              "name": "DATA_COLLECTION_MODE_DENY",
              "number": 1,
              "canonical": true,
              "description": "Request routing only to providers that do not collect submitted data under the routing policy."
            }
          ],
          "x-enum-description": "Provider-routing preference for whether providers may collect submitted data.",
          "description": "Provider data-collection preference used when routing the request.",
          "x-presence": "explicit"
        },
        "zdr": {
          "type": "boolean",
          "description": "Whether routing requests providers offering zero data retention.",
          "x-presence": "implicit"
        },
        "only": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provider identifiers allowed by the routing preference.",
          "x-presence": "collection"
        },
        "ignore": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provider identifiers excluded by the routing preference.",
          "x-presence": "collection"
        },
        "quantizations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Model quantization formats allowed by the routing preference.\n\ngeneric string for portability",
          "x-presence": "collection"
        },
        "sort": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "PROVIDER_SORT_PRICE",
                "PROVIDER_SORT_THROUGHPUT",
                "PROVIDER_SORT_LATENCY"
              ],
              "x-enumDescriptions": {
                "PROVIDER_SORT_PRICE": "Prefer providers with lower price.",
                "PROVIDER_SORT_THROUGHPUT": "Prefer providers with higher throughput.",
                "PROVIDER_SORT_LATENCY": "Prefer providers with lower latency."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "PROVIDER_SORT_PRICE",
              "number": 0,
              "canonical": true,
              "description": "Prefer providers with lower price."
            },
            {
              "name": "PROVIDER_SORT_THROUGHPUT",
              "number": 1,
              "canonical": true,
              "description": "Prefer providers with higher throughput."
            },
            {
              "name": "PROVIDER_SORT_LATENCY",
              "number": 2,
              "canonical": true,
              "description": "Prefer providers with lower latency."
            }
          ],
          "x-enum-description": "Metric used to order eligible model providers.",
          "description": "Metric used to order eligible model providers.",
          "x-presence": "explicit"
        },
        "maxPrice": {
          "description": "Upper price bounds used when selecting a model provider.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ProviderMaxPrice"
            }
          ]
        },
        "enforceDistillableText": {
          "type": "boolean",
          "description": "Embeddings: enforce distillable text.",
          "x-presence": "implicit"
        },
        "preferredMinThroughput": {
          "description": "Deprioritize providers below this throughput (tokens/sec). Does not exclude — just pushes to end of preference list.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PercentileThreshold"
            }
          ]
        },
        "preferredMaxLatency": {
          "description": "Deprioritize providers above this latency (ms).",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PercentileThreshold"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ProviderPreferences",
        "url": "/api/models/schema-1gg690bhqh#response"
      }
    },
    "llm_v1_common_v1_ProviderMaxPrice": {
      "type": "object",
      "description": "Routing / provider preferences (generic superset)",
      "properties": {
        "prompt": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "$/1M prompt tokens.",
          "x-presence": "implicit"
        },
        "completion": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "$/1M completion tokens.",
          "x-presence": "implicit"
        },
        "request": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Maximum provider cost allowed per request, in US dollars.\n\n$/request",
          "x-presence": "implicit"
        },
        "image": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Maximum provider cost allowed per image, in US dollars.\n\n$/image",
          "x-presence": "implicit"
        },
        "audio": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "$/1M audio tokens.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ProviderMaxPrice",
        "url": "/api/models/schema-1geaq4stvt#response"
      }
    },
    "llm_v1_common_v1_PercentileThreshold": {
      "type": "object",
      "description": "Percentile thresholds for provider performance metrics",
      "properties": {
        "p50": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Threshold applied to the provider metric’s 50th percentile.",
          "x-presence": "implicit"
        },
        "p90": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Threshold applied to the provider metric’s 90th percentile.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PercentileThreshold",
        "url": "/api/models/schema-1gcuue0out#response"
      }
    },
    "llm_v1_common_v1_ReasoningOptions": {
      "type": "object",
      "description": "Reasoning options\n\nSupported effort settings depend on the selected model; a setting can be rejected or ignored when unsupported. To ask for the answer without returned reasoning text, set [`exclude`](/api/models/schema-1gi26i7r89#request-field-exclude) to `true`. That controls the output you receive, not whether the model uses or bills reasoning tokens.",
      "properties": {
        "effort": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "EFFORT_HIGH",
                "EFFORT_MEDIUM",
                "EFFORT_LOW",
                "EFFORT_XHIGH",
                "EFFORT_MINIMAL",
                "EFFORT_NONE"
              ],
              "x-enumDescriptions": {
                "EFFORT_HIGH": "Request the provider's high reasoning-effort level.",
                "EFFORT_MEDIUM": "Request the provider's medium reasoning-effort level.",
                "EFFORT_LOW": "Request the provider's low reasoning-effort level.",
                "EFFORT_XHIGH": "Request the provider's extra-high reasoning-effort level where supported.",
                "EFFORT_MINIMAL": "Request the provider's minimal reasoning-effort level where supported.",
                "EFFORT_NONE": "Request no reasoning effort where the provider supports disabling it."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "EFFORT_HIGH",
              "number": 0,
              "canonical": true,
              "description": "Request the provider's high reasoning-effort level."
            },
            {
              "name": "EFFORT_MEDIUM",
              "number": 1,
              "canonical": true,
              "description": "Request the provider's medium reasoning-effort level."
            },
            {
              "name": "EFFORT_LOW",
              "number": 2,
              "canonical": true,
              "description": "Request the provider's low reasoning-effort level."
            },
            {
              "name": "EFFORT_XHIGH",
              "number": 3,
              "canonical": true,
              "description": "Request the provider's extra-high reasoning-effort level where supported."
            },
            {
              "name": "EFFORT_MINIMAL",
              "number": 4,
              "canonical": true,
              "description": "Request the provider's minimal reasoning-effort level where supported."
            },
            {
              "name": "EFFORT_NONE",
              "number": 5,
              "canonical": true,
              "description": "Request no reasoning effort where the provider supports disabling it."
            }
          ],
          "x-enum-description": "Requested reasoning effort sent to the model provider; supported levels and their effect depend on the chosen model.",
          "description": "Requested model reasoning effort.",
          "x-presence": "explicit"
        },
        "maxTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum reasoning-token count requested from the model provider.",
          "x-presence": "implicit"
        },
        "exclude": {
          "type": "boolean",
          "description": "Whether the provider should omit reasoning content from its response.",
          "x-presence": "implicit"
        },
        "includeReasoningHistory": {
          "type": "boolean",
          "description": "When true (default), reasoning content from previous turns is included in multi-turn requests to enable provider continuity.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ReasoningOptions",
        "url": "/api/models/schema-1gi26i7r89#response"
      }
    },
    "llm_v1_common_v1_UsageOptions": {
      "type": "object",
      "description": "Usage accounting preferences",
      "properties": {
        "include": {
          "type": "boolean",
          "description": "Whether usage accounting should be included in the provider response.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "UsageOptions",
        "url": "/api/models/schema-1h615aquj0#response"
      }
    },
    "llm_v1_common_v1_ToolDefinition": {
      "type": "object",
      "description": "A tool or function the model can request during generation.\n\n**[`serverId`](/api/models/schema-1gomaj79cc#request-field-serverid) is required** on every tool definition. Use `\"client\"` as the conventional value for tools you execute — client tools are matched by **name**, not by server.\n\n**[`parametersJsonSchema`](/api/models/schema-1gomaj79cc#request-field-parametersjsonschema)** is what the model reads to work out how to call your tool. Describe the fields accurately. It is not a validation contract — the platform never checks the model's arguments against it, so treat what arrives as untrusted.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name used to select and invoke the tool.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "description": "Explanation of the tool’s purpose supplied to the model and callers.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "parametersJsonSchema": {
          "type": "object",
          "additionalProperties": true,
          "description": "JSON Schema object.",
          "x-presence": "message"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional tool metadata (version, category, etc.).",
          "x-presence": "collection"
        },
        "serverId": {
          "type": "string",
          "description": "Required server identifier. Use `client` as the conventional value for client-side tools; those tools are matched by name, not by server.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tool categorization tags.",
          "x-presence": "collection"
        },
        "documentationUrl": {
          "type": "string",
          "description": "Link to detailed documentation.",
          "x-presence": "implicit"
        },
        "outputJsonSchema": {
          "type": "object",
          "additionalProperties": true,
          "description": "Optional output schema (JSON Schema serialized as string) describing structured results",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "ToolDefinition",
        "url": "/api/models/schema-1gomaj79cc#response"
      },
      "x-request-required": [
        "name",
        "description",
        "serverId"
      ]
    },
    "llm_v1_common_v1_ToolChoice": {
      "type": "object",
      "description": "Policy selecting automatic tool choice, no tool use, or a named tool.",
      "properties": {
        "kind": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "TOOL_CHOICE_KIND_AUTO",
                "TOOL_CHOICE_KIND_NONE",
                "TOOL_CHOICE_KIND_SPECIFIC"
              ],
              "x-enumDescriptions": {
                "TOOL_CHOICE_KIND_AUTO": "Let the provider decide whether to call an available tool.\n\nprovider decides (default)",
                "TOOL_CHOICE_KIND_NONE": "Disable tool selection for this generation.\n\ndisable tools",
                "TOOL_CHOICE_KIND_SPECIFIC": "Require the named tool specified by the enclosing tool-choice configuration.\n\nforce a specific tool by name"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "TOOL_CHOICE_KIND_AUTO",
              "number": 0,
              "canonical": true,
              "description": "Let the provider decide whether to call an available tool.\n\nprovider decides (default)"
            },
            {
              "name": "TOOL_CHOICE_KIND_NONE",
              "number": 1,
              "canonical": true,
              "description": "Disable tool selection for this generation.\n\ndisable tools"
            },
            {
              "name": "TOOL_CHOICE_KIND_SPECIFIC",
              "number": 2,
              "canonical": true,
              "description": "Require the named tool specified by the enclosing tool-choice configuration.\n\nforce a specific tool by name"
            }
          ],
          "x-enum-description": "How the model provider should choose whether and which tool to call.",
          "description": "Discriminator selecting the representation or policy used by this message.",
          "x-presence": "explicit"
        },
        "specificToolName": {
          "type": "string",
          "description": "Only used when kind = TOOL\\_CHOICE\\_KIND\\_SPECIFIC.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ToolChoice",
        "url": "/api/models/schema-1gmq0e4ilg#response"
      }
    },
    "llm_v1_common_v1_ToolExecutionPolicy": {
      "type": "object",
      "description": "Per-run policy for approvals, MCP execution concurrency, admitted tool-call budget and answer windows. Some stored controls are not enforced by the current workflow.\n\nIf an expected approval does not appear, inspect the tool/server require rules and auto-approve exceptions. Auto-approve takes precedence; server IDs are compared case-insensitively after trimming whitespace. An exception does not establish that the user reviewed the action.\n\nAn omitted or zero [`approvalTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-approvaltimeoutms) waits five minutes. At expiry, [`failOnApprovalTimeoutToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-failonapprovaltimeouttoolnamepatterns) yields `FAILED` for matching calls and `TIMED_OUT` for others; an unset list makes every expiry `FAILED`.\n\nThe retry controls [`retriableToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-retriabletoolnamepatterns), [`retryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-retryableerrorsubstrings), [`nonRetryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-nonretryableerrorsubstrings), [`maxRetries`](/api/models/schema-1h2ji21uc4#request-field-maxretries) and [`retryBackoff`](/api/models/schema-1h2ji21uc4#request-field-retrybackoff) are stored but do not schedule retries. Ordering rules, tie-breaking, the per-loop call cap, client-tool scheduling mode, failure mode and stop-on-failure rules are also not enforced; do not rely on them as execution or safety controls.\n\n[`maxTotalToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxtotaltoolcalls) limits admitted calls across the run; zero or omission leaves the cap unset. A client call consumes budget when armed. A routable MCP call consumes budget before approval, including when held for approval or later rejected. Unknown tools and calls refused because the cap is already exhausted do not consume budget. Further calls at the limit receive `FAILED` tool results naming the limit, which the model can use when continuing the run.\n\n[`maxParallelToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxparalleltoolcalls) limits concurrent MCP execution. Zero or one runs MCP calls sequentially; values greater than one permit concurrency. Client calls are armed separately, and your application controls their execution concurrency.\n\nChoose [`clientToolTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-clienttooltimeoutms) for your application's validation and action. Zero or omission gives a five-minute answer window; there is no unbounded setting. Each call returns its resolved [`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat).\n\nSee [Tool execution policies](/api/tool-execution/policies) for policy selection and caller reconciliation.",
      "properties": {
        "requireApprovalToolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tool-name patterns selecting calls that require an approval decision.",
          "x-presence": "collection"
        },
        "requireApprovalServerIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "MCP server identifiers whose calls require approval. IDs are compared case-insensitively after trimming whitespace.",
          "x-presence": "collection"
        },
        "autoApproveToolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tool-name patterns whose matching calls may be approved automatically.",
          "x-presence": "collection"
        },
        "autoApproveServerIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "MCP server identifiers exempted from approval require rules. IDs are compared case-insensitively after trimming whitespace.",
          "x-presence": "collection"
        },
        "approvalMode": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "APPROVAL_MODE_MIXED",
                "APPROVAL_MODE_BLOCK_ALL"
              ],
              "x-enumDescriptions": {
                "APPROVAL_MODE_MIXED": "Run automatically approved calls immediately and hold only calls that require approval.\n\nRun auto-approved tool calls immediately; hold only those requiring approval.",
                "APPROVAL_MODE_BLOCK_ALL": "Hold execution of all tool calls in the loop until the approval-required calls are approved or rejected.\n\nBlock execution of all tool calls in the loop until all approval-required calls are approved/rejected."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "APPROVAL_MODE_MIXED",
              "number": 0,
              "canonical": true,
              "description": "Run automatically approved calls immediately and hold only calls that require approval.\n\nRun auto-approved tool calls immediately; hold only those requiring approval."
            },
            {
              "name": "APPROVAL_MODE_BLOCK_ALL",
              "number": 1,
              "canonical": true,
              "description": "Hold execution of all tool calls in the loop until the approval-required calls are approved or rejected.\n\nBlock execution of all tool calls in the loop until all approval-required calls are approved/rejected."
            }
          ],
          "x-enum-description": "How approval-required tool calls affect other tool calls in the same execution loop.",
          "description": "How to schedule execution when approvals are required for some tools\n\ndefault: APPROVAL\\_MODE\\_MIXED",
          "x-presence": "explicit"
        },
        "clientToolMode": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "CLIENT_TOOL_MODE_MIXED",
                "CLIENT_TOOL_MODE_BLOCK_ALL"
              ],
              "x-enumDescriptions": {
                "CLIENT_TOOL_MODE_MIXED": "Record pending client tools and continue with server-executed MCP tools and the loop.\n\nDo not wait on client tools; record pending and continue executing MCP tools and loop",
                "CLIENT_TOOL_MODE_BLOCK_ALL": "Hold loop advancement until the caller submits results for all pending client tools.\n\nBlock loop advancement until all client-side tool calls are resolved by the client"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "CLIENT_TOOL_MODE_MIXED",
              "number": 0,
              "canonical": true,
              "description": "Record pending client tools and continue with server-executed MCP tools and the loop.\n\nDo not wait on client tools; record pending and continue executing MCP tools and loop"
            },
            {
              "name": "CLIENT_TOOL_MODE_BLOCK_ALL",
              "number": 1,
              "canonical": true,
              "description": "Hold loop advancement until the caller submits results for all pending client tools.\n\nBlock loop advancement until all client-side tool calls are resolved by the client"
            }
          ],
          "x-enum-description": "How unresolved caller-executed tools affect progression of the tool loop.",
          "description": "Stored requested client-tool scheduling mode; not enforced by the current workflow.\n\ndefault: CLIENT\\_TOOL\\_MODE\\_MIXED",
          "x-presence": "explicit"
        },
        "approvalTimeoutMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Time allowed for an approval decision, in milliseconds. Zero or omission selects the five-minute default; a positive value overrides it. There is no unbounded wait setting. At expiry, matching fail\\_on\\_approval\\_timeout\\_tool\\_name\\_patterns produces FAILED; other calls become TIMED\\_OUT. An empty pattern list makes every expiry FAILED.",
          "x-presence": "implicit"
        },
        "failOnApprovalTimeoutToolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Selects approval timeouts reported as FAILED; nonmatching calls become TIMED\\_OUT. An empty list makes every approval expiry FAILED. Global failure\\_mode is not enforced.",
          "x-presence": "collection"
        },
        "orderRules": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolExecutionOrderRule"
          },
          "description": "Stored requested ordering rules; not applied by the current generation workflow.",
          "x-presence": "collection"
        },
        "stableSortByCallIndexOnTie": {
          "type": "boolean",
          "description": "Stored requested ordering tie-breaker; not applied by the current generation workflow.",
          "x-presence": "implicit"
        },
        "maxParallelToolCalls": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum concurrent MCP tool executions. Zero, omission or one runs MCP calls sequentially; larger values permit concurrency. Client calls are armed separately, and their execution concurrency is controlled by the caller application.",
          "x-presence": "implicit"
        },
        "maxToolCallsPerLoop": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Stored requested per-loop tool-call cap; not enforced by the current generation workflow.\n\n0 = no cap",
          "x-presence": "implicit"
        },
        "maxTotalToolCalls": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum admitted tool calls across the run; zero or omission leaves the cap unset. Client calls count when armed. Routable MCP calls count before approval, including calls later rejected. Unknown tools and calls refused by an exhausted cap do not count.",
          "x-presence": "implicit"
        },
        "retriableToolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Stored requested retry selection; does not enable retries in the current workflow.",
          "x-presence": "collection"
        },
        "maxRetries": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Stored requested retry count; does not enable retries in the current workflow.\n\nper tool-call",
          "x-presence": "implicit"
        },
        "retryBackoff": {
          "description": "Stored requested retry delays; not applied by the current generation workflow.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Backoff"
            }
          ]
        },
        "retryableErrorSubstrings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Stored requested retryable-error selection; not evaluated by the current workflow.",
          "x-presence": "collection"
        },
        "nonRetryableErrorSubstrings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Stored requested retry exclusions; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        },
        "timeouts": {
          "description": "Overall execution time budget for the generation run.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_TimeoutPolicy"
            }
          ]
        },
        "clientToolTimeoutMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Time allowed for a client-side tool result, in milliseconds. Zero or omission selects the five-minute default; a positive value overrides it. There is no unbounded wait. The resolved answer deadline is returned as clientToolDeadlineAt on each call. A result arriving after the deadline is rejected. At expiry, an empty or matching fail\\_on\\_approval\\_timeout\\_tool\\_name\\_patterns list yields FAILED; other calls become TIMED\\_OUT. Expiry closes the answer window and does not cancel a client action already in progress.",
          "x-presence": "implicit"
        },
        "failureMode": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "FAILURE_MODE_CONTINUE",
                "FAILURE_MODE_STOP_LOOP",
                "FAILURE_MODE_STOP_RUN"
              ],
              "x-enumDescriptions": {
                "FAILURE_MODE_CONTINUE": "Request continued processing after the failed tool call.",
                "FAILURE_MODE_STOP_LOOP": "Request stopping the current tool-execution loop after the failure.",
                "FAILURE_MODE_STOP_RUN": "Request stopping the generation run after the failure."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "FAILURE_MODE_CONTINUE",
              "number": 0,
              "canonical": true,
              "description": "Request continued processing after the failed tool call."
            },
            {
              "name": "FAILURE_MODE_STOP_LOOP",
              "number": 1,
              "canonical": true,
              "description": "Request stopping the current tool-execution loop after the failure."
            },
            {
              "name": "FAILURE_MODE_STOP_RUN",
              "number": 2,
              "canonical": true,
              "description": "Request stopping the generation run after the failure."
            }
          ],
          "x-enum-description": "Requested scope of stopping after a tool execution failure.",
          "description": "Stored requested failure action; not enforced by the current generation workflow.\n\ndefault if no rule matches",
          "x-presence": "explicit"
        },
        "stopOnFailureRules": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_StopOnFailureRule"
          },
          "description": "Stored requested stop rules; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "ToolExecutionPolicy",
        "url": "/api/models/schema-1h2ji21uc4#response"
      }
    },
    "llm_v1_common_v1_ToolExecutionOrderRule": {
      "type": "object",
      "description": "Per-run requested ordering rule for tool execution. The current generation workflow stores these rules but does not apply their patterns, server filters or weights.",
      "properties": {
        "toolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requested tool-name patterns; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        },
        "serverIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional requested MCP server filter; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        },
        "weight": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested ordering weight; not applied by the current generation workflow.\n\nlower executes first",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ToolExecutionOrderRule",
        "url": "/api/models/schema-1h0coqd8e8#response"
      }
    },
    "llm_v1_common_v1_Backoff": {
      "type": "object",
      "description": "Requested initial delay, growth factor and upper bound for tool-call retries. The current generation workflow stores this configuration but does not schedule retries from it.",
      "properties": {
        "initialMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested initial retry delay in milliseconds; not applied by the current generation workflow.\n\ne.g., 200",
          "x-presence": "implicit"
        },
        "multiplier": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Requested retry-delay multiplier; not applied by the current generation workflow.\n\ne.g., 2.0",
          "x-presence": "implicit"
        },
        "maxMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested maximum retry delay in milliseconds; not applied by the current generation workflow.\n\ne.g., 2000",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Backoff",
        "url": "/api/models/schema-1gqlghlp0v#response"
      }
    },
    "llm_v1_common_v1_TimeoutPolicy": {
      "type": "object",
      "description": "Bounds the run as a whole. This message has no per-tool or per-loop execution timeout. Approval and client-result answer windows are configured separately on ToolExecutionPolicy; those waits do not cancel an already dispatched remote action.\n\nSet a finite [`timeouts.overallMs`](/api/models/schema-1gu5od417l#request-field-overallms) when the task needs a duration limit. It is measured from run start; zero or omission leaves the run-level duration unbounded.\n\nWhen Travila observes that the budget has elapsed, the run can end `TIMED_OUT` and pending calls can be closed with `endReason: \"run_timed_out\"`. A call still awaiting approval has not been dispatched. The timeout does not guarantee a remote action stops at that instant, establish whether it took effect, or roll it back.\n\nUse [`endReason`](/api/models/schema-1it6mqsqoo#response-field-endreason) to distinguish a run deadline from a call's own answer window: an unanswered approval reads `approval_timeout`, and an unanswered client tool reads `client_timeout`. Read the actual tool status too; approval and client-tool expiry can produce `FAILED` or `TIMED_OUT`. Run and individual tool outcomes are different fields.",
      "properties": {
        "overallMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Overall run budget in milliseconds, measured from run start. Zero or omission leaves this run-level bound unset. The workflow checks the deadline and can end with AGENT\\_STATUS\\_TIMED\\_OUT; it cannot cancel or undo a remote action already dispatched. Approval and client-result waits retain their separate finite limits.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TimeoutPolicy",
        "url": "/api/models/schema-1gu5od417l#response"
      }
    },
    "llm_v1_common_v1_StopOnFailureRule": {
      "type": "object",
      "description": "Requested tool-selection rule for handling an execution failure. The current generation workflow stores these rules but does not evaluate them or stop a loop or run because of them.\n\nThe conditions in [`stopOnFailureRules`](/api/models/schema-1h2ji21uc4#request-field-stoponfailurerules), including [`priority`](/api/models/schema-1gstrgb39r#request-field-priority), timeout inclusion and error matching, are not enforced. Do not rely on these fields as a stop control.",
      "properties": {
        "toolNamePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requested tool-name selection; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        },
        "serverIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requested MCP server selection; not evaluated by the current generation workflow.",
          "x-presence": "collection"
        },
        "onFailure": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "FAILURE_MODE_CONTINUE",
                "FAILURE_MODE_STOP_LOOP",
                "FAILURE_MODE_STOP_RUN"
              ],
              "x-enumDescriptions": {
                "FAILURE_MODE_CONTINUE": "Request continued processing after the failed tool call.",
                "FAILURE_MODE_STOP_LOOP": "Request stopping the current tool-execution loop after the failure.",
                "FAILURE_MODE_STOP_RUN": "Request stopping the generation run after the failure."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "FAILURE_MODE_CONTINUE",
              "number": 0,
              "canonical": true,
              "description": "Request continued processing after the failed tool call."
            },
            {
              "name": "FAILURE_MODE_STOP_LOOP",
              "number": 1,
              "canonical": true,
              "description": "Request stopping the current tool-execution loop after the failure."
            },
            {
              "name": "FAILURE_MODE_STOP_RUN",
              "number": 2,
              "canonical": true,
              "description": "Request stopping the generation run after the failure."
            }
          ],
          "x-enum-description": "Requested scope of stopping after a tool execution failure.",
          "description": "Requested failure action; not evaluated by the current generation workflow.\n\nSTOP\\_LOOP or STOP\\_RUN",
          "x-presence": "explicit"
        },
        "includeTimeouts": {
          "type": "boolean",
          "description": "Requested inclusion of timeouts as failures; not evaluated by the current generation workflow.\n\ntreat timeouts as failure for this rule",
          "x-presence": "implicit"
        },
        "errorSubstrings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requested error-text selection; not evaluated by the current generation workflow.\n\nonly stop if error matches",
          "x-presence": "collection"
        },
        "priority": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested rule priority; not evaluated by the current generation workflow.\n\nlower evaluated first",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "StopOnFailureRule",
        "url": "/api/models/schema-1gstrgb39r#response"
      }
    },
    "llm_v1_common_v1_GenerationConfig_ResponseFormat": {
      "type": "object",
      "description": "Structured response control\n\nWhen a schema is set, current server validation defaults to enabled unless explicitly disabled. An explicit retry count of zero disables validation retries; omission defaults to one. A retry can incur another model attempt and cost. A schema name is a label, not an immutable schema version.",
      "properties": {
        "jsonObject": {
          "type": "boolean",
          "description": "Whether the model provider is requested to return a valid JSON object.\n\nenforce valid JSON object",
          "x-presence": "implicit"
        },
        "jsonSchema": {
          "type": "object",
          "additionalProperties": true,
          "description": "JSON Schema describing the requested structured model output.\n\noptional JSON Schema (draft-07+)",
          "x-presence": "message"
        },
        "schemaName": {
          "type": "string",
          "description": "Human-readable name of the structured-output schema, included in structured-message metadata and in the provider request’s json\\_schema.name.",
          "x-presence": "implicit"
        },
        "validate": {
          "type": "boolean",
          "description": "Enable server-side validation of the response against json\\_schema. Default: true when json\\_schema is set (applied in Go when not explicitly set).",
          "x-presence": "explicit"
        },
        "maxValidationRetries": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum retries when server-side validation fails. Default: 1 when not set. Set to 0 to disable retry (fail immediately on invalid output).",
          "x-presence": "explicit",
          "x-protovalidate": {
            "int64": {
              "lte": "3",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "responseHealing": {
          "type": "boolean",
          "description": "Enable response healing for structured JSON output. Defaults to enabled for non-streaming requests with json\\_schema unless explicitly disabled.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "ResponseFormat",
        "url": "/api/models/schema-1g69v4vltg#response"
      }
    },
    "llm_v1_common_v1_GenerationConfig_PluginConfig": {
      "type": "object",
      "description": "Provider plugin identifier and its parser, search, or additional configuration.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Provider plugin identifier, such as file-parser.\n\ne.g., \"file-parser\"",
          "x-presence": "implicit"
        },
        "pdf": {
          "description": "PDF annotation or parser configuration selected by the enclosing message.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig_PluginPDFConfig"
            }
          ]
        },
        "web": {
          "description": "Web-search configuration for the selected generation plugin.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig_PluginWebConfig"
            }
          ]
        },
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional provider-specific plugin parameters.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "PluginConfig",
        "url": "/api/models/schema-1g5jvg1icc#response"
      }
    },
    "llm_v1_common_v1_GenerationConfig_PluginPDFConfig": {
      "type": "object",
      "description": "Plugins for pre/post-processing (generic representation)",
      "properties": {
        "engine": {
          "type": "string",
          "description": "PDF parsing engine selected for the provider plugin.\n\n\"pdf-text\", \"mistral-ocr\", or \"native\"",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PluginPDFConfig",
        "url": "/api/models/schema-1fvi4j1t0d#response"
      }
    },
    "llm_v1_common_v1_GenerationConfig_PluginWebConfig": {
      "type": "object",
      "description": "Provider web-search configuration used to augment a generation request.",
      "properties": {
        "engine": {
          "type": "string",
          "description": "Search engine selected for the provider’s web-search plugin.\n\ne.g., native/exa",
          "x-presence": "implicit"
        },
        "maxResults": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum web-search result count requested by the plugin.",
          "x-presence": "implicit"
        },
        "searchPrompt": {
          "type": "string",
          "description": "Instructions supplied to the web-search plugin.",
          "x-presence": "implicit"
        },
        "webSearchOptions": {
          "description": "Options controlling the amount of web-search context requested.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig_PluginWebConfig_WebSearchOptions"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "PluginWebConfig",
        "url": "/api/models/schema-1g3q0m5uun#response"
      }
    },
    "llm_v1_common_v1_GenerationConfig_PluginWebConfig_WebSearchOptions": {
      "type": "object",
      "description": "Amount of web-search context requested for generation.",
      "properties": {
        "searchContextSize": {
          "type": "string",
          "description": "Requested amount of web-search context: low, medium, or high.\n\n\"low\" | \"medium\" | \"high\"",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "WebSearchOptions",
        "url": "/api/models/schema-1g1r4lmi7m#response"
      }
    },
    "llm_v1_common_v1_TimeAwareConfig": {
      "type": "object",
      "description": "Configuration for time-aware LLM generation. Controls injection of temporal context (current time, message timestamps, file timestamps) into the LLM context during generation.\n\ninclude\\_message\\_timestamps and include\\_file\\_timestamps default to false. The timezone is an IANA timezone name and defaults to UTC.\n\ntimestamp\\_format accepts empty text, friendly, iso8601 or date\\_only. The default friendly format includes a human-readable date, time and zone; iso8601 uses an ISO timestamp, and date\\_only includes only the date. An unrecognized value uses friendly formatting.",
      "properties": {
        "includeCurrentTime": {
          "type": "boolean",
          "description": "When enabled, include the current date and time in the per-turn volatile context attached to the current user message, using the configured timezone and timestamp format.",
          "x-presence": "implicit"
        },
        "includeMessageTimestamps": {
          "type": "boolean",
          "description": "Include timestamps on messages in the model context to provide chronological context. Requires the message timestamp to be populated. Default: false.",
          "x-presence": "implicit"
        },
        "includeFileTimestamps": {
          "type": "boolean",
          "description": "Include upload/modification timestamps when resolving FILE\\_ID content. When true, resolved file references include \"\\[Uploaded: \\<timestamp>]\" annotations. Default: false",
          "x-presence": "implicit"
        },
        "timezone": {
          "type": "string",
          "description": "Timezone for formatting (IANA format, e.g., \"America/Los\\_Angeles\"). Default: \"UTC\"",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "50"
            }
          },
          "x-validation-scope": "request"
        },
        "timestampFormat": {
          "type": "string",
          "description": "Format pattern for timestamps. \"friendly\" (default): \"Jan 2, 2026 at 3:04 PM MST\" \"iso8601\": \"2026-01-02T15:04:00-08:00\" \"date\\_only\": \"2026-01-02\"",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "50",
              "in": [
                "",
                "friendly",
                "iso8601",
                "date_only"
              ]
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-reference-model": {
        "title": "TimeAwareConfig",
        "url": "/api/models/schema-1gkqaobt3t#response"
      }
    },
    "llm_v1_common_v1_TurnContextConfig": {
      "type": "object",
      "description": "Configuration for turn-aware LLM generation\n\nTurn context tells the model the current generation number and remaining allowance, with tool guidance based on that allowance. This annotation is enabled by default and is not persisted in message history. Its presentation options belong in the [generation configuration reference](/api/conversations/update-default-generation-config); the annotation itself does not change the run limit.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable turn context injection into system prompt Default: true",
          "x-presence": "implicit"
        },
        "includeToolGuidance": {
          "type": "boolean",
          "description": "Include tool usage guidance based on remaining turns Default: false (can enable for agentic workflows)",
          "x-presence": "implicit"
        },
        "format": {
          "type": "string",
          "description": "Format for turn context \"minimal\": \"\\[Turn 2/5]\" \"standard\": \"\\[Turn 2 of 5 - 3 turns remaining. Plan your response accordingly.]\" \"verbose\": Includes detailed behavioral guidance Default: \"standard\"",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "in": [
                "minimal",
                "standard",
                "verbose"
              ]
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-reference-model": {
        "title": "TurnContextConfig",
        "url": "/api/models/schema-1h5dj58uph#response"
      },
      "x-request-required": [
        "format"
      ]
    },
    "llm_v1_common_v1_Mem0Config": {
      "type": "object",
      "description": "Configuration for searching, injecting and storing semantic memories during generation. Configure memory integration in the mem0 block of the conversation defaultGenerationConfig or in a per-turn overrideGenerationConfig.\n\nEnabled integration provides retrieval and asynchronous extraction. Retrieved context is added to the latest user message despite the injectAsSystemContext name. addMemoriesAsync is ignored: extraction runs after the run, without an option to delay the send response until extraction completes.\n\nReranking and graph relationships require deployment support; their flags do not establish that support or a complete relationship-removal procedure. exposeAsMcpTool has no effect. Use search-memories from the application or enable automatic retrieval with mem0.enabled; the flag alone does not give the model a new tool.\n\nWhen memory is enabled, search\\_top\\_k selects 1–50 results; search\\_threshold selects a relevance score from 0.0 to 1.0. The generation retrieval limit bounds injected context; the separate user-facing memory-search operation allows up to 100 results.\n\ncustom\\_extraction\\_prompt selects a custom extraction prompt when nonempty; otherwise the default prompt is used. agent\\_id\\_override changes the conversation-based memory scope so memories can be shared across conversations. include\\_assistant\\_messages controls assistant/agent-scoped memories and defaults to false. inject\\_memory\\_timestamps defaults to true and includes remembered and, when available, updated dates.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable searching for relevant memories, adding them to generation context and extracting new memories after generation. Default: false.",
          "x-presence": "implicit"
        },
        "searchTopK": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of memories to retrieve during search. Higher values provide more context but increase token usage.\n\nThe generation retrieval limit is 50 because retrieved memories can be included in the volatile context attached to the current turn’s user message. This is a token-budget guard rather than a hard limit of the memory store. The separate user-facing memory-search request allows up to 100 results.\n\nRange: 1–50 when memory is enabled.",
          "x-presence": "implicit"
        },
        "searchThreshold": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Minimum relevance score threshold for memory search results. Memories below this threshold are filtered out. Range: 0.0-1.0 (validated only when enabled = true)",
          "x-presence": "implicit"
        },
        "injectAsSystemContext": {
          "type": "boolean",
          "description": "When true, include retrieved memories in the per-turn volatile context attached to the current user message. Memories are formatted as a bullet list under a \"\\[Relevant memories about this user:]\" header. When false, retrieved memories are not included in the model context.",
          "x-presence": "implicit"
        },
        "searchQueryOverride": {
          "type": "string",
          "description": "Custom search query to use instead of the last user message. If empty, the last user message content is used as the search query.",
          "x-presence": "implicit"
        },
        "enableRerank": {
          "type": "boolean",
          "description": "Request reranking to improve search relevance. It may improve results and add latency, and requires deployment support. Default: false.",
          "x-presence": "implicit"
        },
        "addMemoriesAsync": {
          "type": "boolean",
          "description": "This field is accepted but does not change extraction behavior. When memory integration is enabled, extraction runs asynchronously after generation, including when this value is false. It does not make the send response wait for extraction to complete.",
          "x-presence": "implicit"
        },
        "customExtractionPrompt": {
          "type": "string",
          "description": "Custom prompt for memory/fact extraction. If empty, the default extraction prompt is used. Use this to customize what types of facts are extracted.",
          "x-presence": "implicit"
        },
        "enableGraph": {
          "type": "boolean",
          "description": "Enable relationship extraction and graph-based memory search when graph memory is configured. Default: false.",
          "x-presence": "implicit"
        },
        "agentIdOverride": {
          "type": "string",
          "description": "Override the agent\\_id used for memory scoping. By default, the conversation\\_id is used as the agent\\_id. Use this to share memories across multiple conversations.",
          "x-presence": "implicit"
        },
        "exposeAsMcpTool": {
          "type": "boolean",
          "description": "This flag is currently ignored. It does not expose memory search as a model tool. Default: false.",
          "x-presence": "implicit"
        },
        "includeAssistantMessages": {
          "type": "boolean",
          "description": "Include assistant/agent-scoped memories in operations. When false, skips agent\\_id for both add and search operations, keeping only user-scoped memories. Default: false",
          "x-presence": "implicit"
        },
        "injectMemoryTimestamps": {
          "type": "boolean",
          "description": "Include created\\_at/updated\\_at timestamps on injected memories. When true, each memory bullet includes a \"(remembered: \\<date>)\" annotation and optionally \"(updated: \\<date>)\" if the memory was modified after creation. Default: true",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "MemoryConfig",
        "url": "/api/models/schema-1g8iadjcu1#response"
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.gate.enabled",
            "message": "search_top_k and search_threshold must be valid when enabled is true",
            "expression": "!this.enabled || ((this.search_top_k >= 1 && this.search_top_k <= 50) && (this.search_threshold >= 0.0 && this.search_threshold <= 1.0))"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "llm_v1_common_v1_FileResolutionConfig": {
      "type": "object",
      "description": "Configuration for resolving CONTENT\\_PART\\_TYPE\\_FILE\\_ID parts to fresh signed URLs before requests are sent to LLM providers. Keeps stable file references in message history while generating ephemeral URLs only when needed.\n\nOmitting the file-resolution failure mode uses `FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT`, which silently drops an unresolvable part. A resolved URL can also expire before a later attempt; a fresh URL on every attempt is not guaranteed. With `FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION`, an unresolvable required part fails the run before the provider call. This can happen after asynchronous send acceptance; inspect the correlated run outcome rather than expecting the initial HTTP response to report the later failure. Verify that the report was actually available before presenting its summary.",
      "properties": {
        "failureMode": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION",
                "FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT"
              ],
              "x-enumDescriptions": {
                "FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION": "Fail generation when a file content part cannot be resolved.\n\nFail the entire generation if any file resolution fails.",
                "FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT": "Skip the unresolved content part and continue with the remaining content.\n\nSkip failed content parts and proceed with available content (graceful degradation)."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION",
              "number": 0,
              "canonical": true,
              "description": "Fail generation when a file content part cannot be resolved.\n\nFail the entire generation if any file resolution fails."
            },
            {
              "name": "FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT",
              "number": 1,
              "canonical": true,
              "description": "Skip the unresolved content part and continue with the remaining content.\n\nSkip failed content parts and proceed with available content (graceful degradation)."
            }
          ],
          "x-enum-description": "How generation handles a content part whose file identifier cannot be resolved.",
          "description": "Action to take when a file cannot be resolved. If omitted, skip unresolved file content and use the remaining content.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "FileResolutionConfig",
        "url": "/api/models/schema-1ftcunpmha#response"
      }
    },
    "llm_v1_common_v1_MCPServerReference": {
      "type": "object",
      "description": "MCP Server Reference Lightweight reference to pre-configured MCP servers used by workflows",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "ID of pre-configured MCP server (e.g., \"github\", \"filesystem\").",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether to use this MCP server. Omission means enabled; only an explicitly false value excludes it from discovery.",
          "x-presence": "explicit"
        },
        "priority": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Priority override for tool selection (higher = preferred).",
          "x-presence": "implicit"
        },
        "allowlistToolPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only include tools matching these patterns (e.g., \"github\\_get\\_*\", \"search\\_*\").",
          "x-presence": "collection"
        },
        "blocklistToolPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Exclude tools matching these patterns (e.g., \"*\\_delete\", \"*\\_destroy\").",
          "x-presence": "collection"
        },
        "serverOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Override server settings for this usage.",
          "x-presence": "collection"
        },
        "deferTools": {
          "type": "boolean",
          "description": "Whether this server's tools are deferred. A deferred tool is left out of the model's tool list until the run's tool search loads it. Omission or false declares every tool up front.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "MCPServerReference",
        "url": "/api/models/schema-1hik90rmo1#response"
      },
      "x-request-required": [
        "serverId"
      ]
    },
    "llm_v1_common_v1_PromptVariableSpec": {
      "type": "object",
      "description": "Declares a variable used by a profile’s system-prompt template. Values are supplied through the conversation’s prompt\\_variables.\n\nWhen creating a conversation with an explicitly selected profile, a variable\\_specs entry with required set to true and no nonempty default\\_value causes MISSING\\_REQUIRED\\_PROMPT\\_VARIABLES if the variable is missing. Supply its value at creation; this validation is not repeated for each send or queued turn.\n\nSet intended values explicitly even when the specification declares a default. A nonempty default\\_value suppresses the creation-time missing-required error but is not automatically inserted into the rendered prompt.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Variable name referenced by the profile’s system-prompt template.\n\ne.g. \"user\\_name\" → substituted for \\{\\{.user\\_name}}",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Console hint + caller documentation.",
          "x-presence": "implicit"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a value is required for a profile explicitly selected at conversation creation. This validation does not run for every send or queued turn.",
          "x-presence": "implicit"
        },
        "defaultValue": {
          "type": "string",
          "description": "A nonempty default value suppresses the creation-time missing-required error. It is not automatically inserted into the rendered prompt; supply intended values explicitly.",
          "x-presence": "implicit"
        },
        "type": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "VAR_TYPE_STRING",
                "VAR_TYPE_NUMBER",
                "VAR_TYPE_BOOL",
                "VAR_TYPE_LIST"
              ],
              "x-enumDescriptions": {
                "VAR_TYPE_STRING": "Treat the variable as text in the template context.",
                "VAR_TYPE_NUMBER": "Coerce the variable to a numeric value for arithmetic or numeric comparisons.\n\nfloat64 in the template context (gt/lt/ge…)",
                "VAR_TYPE_BOOL": "Coerce the variable to a boolean for template conditions.\n\ntruthiness in \\{\\{if …}}",
                "VAR_TYPE_LIST": "Provide a list that templates can iterate or join.\n\n\\[]interface\\{} — joinable, rangeable"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "VAR_TYPE_STRING",
              "number": 0,
              "canonical": true,
              "description": "Treat the variable as text in the template context."
            },
            {
              "name": "VAR_TYPE_NUMBER",
              "number": 1,
              "canonical": true,
              "description": "Coerce the variable to a numeric value for arithmetic or numeric comparisons.\n\nfloat64 in the template context (gt/lt/ge…)"
            },
            {
              "name": "VAR_TYPE_BOOL",
              "number": 2,
              "canonical": true,
              "description": "Coerce the variable to a boolean for template conditions.\n\ntruthiness in \\{\\{if …}}"
            },
            {
              "name": "VAR_TYPE_LIST",
              "number": 3,
              "canonical": true,
              "description": "Provide a list that templates can iterate or join.\n\n\\[]interface\\{} — joinable, rangeable"
            }
          ],
          "x-enum-description": "Type used to coerce a prompt variable before placing it in the template context. It determines creation-time validation, the authoring control, and how comparisons and joining values behave.",
          "description": "Optional runtime type for this variable in the template engine.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "PromptVariableSpec",
        "url": "/api/models/schema-1hkadmq6cl#response"
      }
    },
    "llm_v1_services_agent_profile_v1_GetAgentProfileRequest": {
      "type": "object",
      "description": "Inputs for retrieving a selected agent profile and its configuration.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "profileId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "version": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Immutable profile version to retrieve. Zero or omission selects the latest version. A requested version that does not exist returns NOT\\_FOUND.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "profileId"
      ],
      "required": [
        "profileId"
      ]
    },
    "llm_v1_services_agent_profile_v1_GetAgentProfileResponse": {
      "type": "object",
      "description": "Result payload for retrieving a selected agent profile and its configuration.",
      "properties": {
        "profile": {
          "description": "Agent profile returned by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_AgentProfile"
            }
          ]
        }
      }
    },
    "llm_v1_services_agent_profile_v1_ListAgentProfilesRequest": {
      "type": "object",
      "description": "Inputs for paging through agent profiles available in the project library.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "includeDisabled": {
          "type": "boolean",
          "description": "Include disabled profiles in addition to the enabled selection; otherwise only enabled profiles are returned.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_agent_profile_v1_ListAgentProfilesResponse": {
      "type": "object",
      "description": "Result payload for paging through agent profiles available in the project library.",
      "properties": {
        "profiles": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_AgentProfile"
          },
          "description": "Agent profiles returned by the listing or import.",
          "x-presence": "collection"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of matching entries reported by the operation.",
          "x-presence": "implicit"
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether the listing reports additional entries beyond this page.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_agent_profile_v1_UpdateAgentProfileRequest": {
      "type": "object",
      "description": "Inputs for changing selected agent-profile fields and producing an updated revision.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "profileId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "profile": {
          "description": "Carries the new field values.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_AgentProfileInput"
            }
          ]
        },
        "updateMask": {
          "type": "string",
          "description": "Field paths selecting which values to modify. Omitted or empty: only the fields the profile sets change, at every depth.",
          "x-presence": "message"
        }
      },
      "x-request-required": [
        "profileId"
      ],
      "required": [
        "profileId"
      ]
    },
    "llm_v1_services_agent_profile_v1_UpdateAgentProfileResponse": {
      "type": "object",
      "description": "Result payload for changing selected agent-profile fields and producing an updated revision.",
      "properties": {
        "profile": {
          "description": "Agent profile returned by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_AgentProfile"
            }
          ]
        }
      }
    },
    "llm_v1_services_agent_profile_v1_DeleteAgentProfileRequest": {
      "type": "object",
      "description": "Inputs for removing an agent profile from the project library.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "profileId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "profileId"
      ],
      "required": [
        "profileId"
      ]
    },
    "llm_v1_services_agent_profile_v1_DeleteAgentProfileResponse": {
      "type": "object",
      "description": "Response schema for removing an agent profile from the project library; no response fields are declared.",
      "properties": {}
    },
    "llm_v1_services_agent_profile_v1_GetAgentProfileLibraryRequest": {
      "type": "object",
      "description": "Inputs for reading profile metadata available for discovery in the project library.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation. `default` identifies the default project.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_agent_profile_v1_GetAgentProfileLibraryResponse": {
      "type": "object",
      "description": "Result payload for reading profile metadata available for discovery in the project library.",
      "properties": {
        "library": {
          "description": "Profile identity and selection metadata for the project.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_AgentProfileLibrary"
            }
          ]
        }
      }
    },
    "llm_v1_common_v1_AgentProfileLibrary": {
      "type": "object",
      "description": "Selection metadata for the project’s agent profiles. Retrieve an individual profile to read its complete model and tool configuration.",
      "properties": {
        "profiles": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_AgentProfileMetadata"
          },
          "description": "Profile identity and selection metadata. Full configurations are retrieved individually with GetAgentProfile.",
          "x-presence": "collection"
        },
        "defaultProfileId": {
          "type": "string",
          "description": "Project's nominated default profile. Native conversations do not automatically apply it when active\\_profile\\_id is empty; the client must explicitly select its intended profile.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "AgentProfileLibrary",
        "url": "/api/models/schema-ou55jqfkih#response"
      }
    },
    "llm_v1_common_v1_AgentProfileMetadata": {
      "type": "object",
      "description": "Profile identity and selection hints for a picker or router. This projection excludes the system prompt, generation settings, tools and MCP configuration; retrieve AgentProfile to inspect the runtime configuration. These hints do not establish that routing is active.",
      "properties": {
        "profileId": {
          "type": "string",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name used when presenting an agent profile in the library.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit"
        },
        "whenToUse": {
          "type": "string",
          "description": "Instructions describing when this agent profile should be selected.",
          "x-presence": "implicit"
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Keywords associated with discovery or selection of the agent profile.",
          "x-presence": "collection"
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this configuration is enabled.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "AgentProfileMetadata",
        "url": "/api/models/schema-ohmse4h323#response"
      }
    },
    "llm_v1_services_agent_profile_v1_ListAgentProfileVersionsRequest": {
      "type": "object",
      "description": "Inputs for listing immutable revisions of an agent profile.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "profileId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "profileId"
      ],
      "required": [
        "profileId"
      ]
    },
    "llm_v1_services_agent_profile_v1_ListAgentProfileVersionsResponse": {
      "type": "object",
      "description": "Result payload for listing immutable revisions of an agent profile.",
      "properties": {
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_agent_profile_v1_AgentProfileVersionInfo"
          },
          "description": "Descending (newest first). Empty when the profile has never existed.",
          "x-presence": "collection"
        }
      }
    },
    "llm_v1_services_agent_profile_v1_AgentProfileVersionInfo": {
      "type": "object",
      "description": "Version identifier and creation time for an immutable agent-profile revision.",
      "properties": {
        "version": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Version of the resource represented by this message.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "AgentProfileVersionInfo",
        "url": "/api/models/schema-ohrdb6rrpn#response"
      }
    },
    "llm_v1_services_agent_profile_v1_GetPromptFragmentSetRequest": {
      "type": "object",
      "description": "Inputs for reading an immutable version of the project’s prompt-fragment set.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "setVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Version identifying the immutable prompt-fragment set.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "setVersion"
      ],
      "required": [
        "setVersion"
      ]
    },
    "llm_v1_services_agent_profile_v1_GetPromptFragmentSetResponse": {
      "type": "object",
      "description": "Result payload for reading an immutable version of the project’s prompt-fragment set.",
      "properties": {
        "setVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Version identifying the immutable prompt-fragment set.",
          "x-presence": "implicit"
        },
        "fragments": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_PromptFragment"
          },
          "description": "Ordered by fragment\\_id.",
          "x-presence": "collection"
        }
      }
    },
    "llm_v1_common_v1_PromptFragment": {
      "type": "object",
      "description": "Project-scoped reusable prompt-template text. Profiles and other fragments include it with `{{template \"fragment_id\" .}}`; variables come from the conversation’s prompt\\_variables.",
      "properties": {
        "fragmentId": {
          "type": "string",
          "description": "Stable template name, unique within the project library and used by include actions.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name used as a console hint for the reusable prompt fragment.",
          "x-presence": "implicit"
        },
        "content": {
          "type": "string",
          "description": "Raw template text, supporting `{{.variable}}` placeholders and nested `{{template \"id\" .}}` includes.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PromptFragment",
        "url": "/api/models/schema-1j5dvgfmr9#response"
      }
    },
    "llm_v1_services_agent_profile_v1_CreatePromptFragmentRequest": {
      "type": "object",
      "description": "Inputs for creating a reusable block of prompt-template text in the project library.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Project whose prompt library receives the fragment. If omitted, the operation uses `default`.",
          "x-presence": "implicit"
        },
        "fragment": {
          "description": "Reusable prompt fragment definition to add to the project library.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PromptFragmentInput"
            }
          ],
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "fragment"
      ],
      "required": [
        "fragment"
      ]
    },
    "llm_v1_common_v1_PromptFragmentInput": {
      "type": "object",
      "description": "Project-scoped reusable prompt-template text. Profiles and other fragments include it with `{{template \"fragment_id\" .}}`; variables come from the conversation’s prompt\\_variables.",
      "properties": {
        "fragmentId": {
          "type": "string",
          "description": "Stable template name, unique within the project library and used by include actions.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name used as a console hint for the reusable prompt fragment.",
          "x-presence": "implicit"
        },
        "content": {
          "type": "string",
          "description": "Raw template text, supporting `{{.variable}}` placeholders and nested `{{template \"id\" .}}` includes.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PromptFragment",
        "url": "/api/models/schema-1j5dvgfmr9#request"
      }
    },
    "llm_v1_services_agent_profile_v1_CreatePromptFragmentResponse": {
      "type": "object",
      "description": "Result payload for creating a reusable block of prompt-template text in the project library.",
      "properties": {
        "fragment": {
          "description": "Echoes the stored fragment.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PromptFragment"
            }
          ]
        }
      }
    },
    "llm_v1_services_agent_profile_v1_GetPromptFragmentRequest": {
      "type": "object",
      "description": "Inputs for retrieving a reusable prompt fragment by its identifier.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "fragmentId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the reusable prompt fragment.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "fragmentId"
      ],
      "required": [
        "fragmentId"
      ]
    },
    "llm_v1_services_agent_profile_v1_GetPromptFragmentResponse": {
      "type": "object",
      "description": "Result payload for retrieving a reusable prompt fragment by its identifier.",
      "properties": {
        "fragment": {
          "description": "Reusable prompt fragment returned by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PromptFragment"
            }
          ]
        }
      }
    },
    "llm_v1_services_agent_profile_v1_ListPromptFragmentsRequest": {
      "type": "object",
      "description": "Inputs for paging through reusable prompt fragments in the project library.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number used by this listing operation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "llm_v1_services_agent_profile_v1_ListPromptFragmentsResponse": {
      "type": "object",
      "description": "Result payload for paging through reusable prompt fragments in the project library.",
      "properties": {
        "fragments": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_PromptFragment"
          },
          "description": "Reusable prompt fragments returned by the operation.",
          "x-presence": "collection"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of matching entries reported by the operation.",
          "x-presence": "implicit"
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether the listing reports additional entries beyond this page.",
          "x-presence": "implicit"
        },
        "setVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Current version of the project’s prompt-fragment set. Zero means no fragments have been written.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_agent_profile_v1_UpdatePromptFragmentRequest": {
      "type": "object",
      "description": "Inputs for changing selected fields of a reusable prompt fragment.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "fragmentId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the reusable prompt fragment.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "fragment": {
          "description": "Carries the new field values.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PromptFragmentInput"
            }
          ]
        },
        "updateMask": {
          "type": "string",
          "description": "Field paths selecting which values to modify.",
          "x-presence": "message"
        }
      },
      "x-request-required": [
        "fragmentId"
      ],
      "required": [
        "fragmentId"
      ]
    },
    "llm_v1_services_agent_profile_v1_UpdatePromptFragmentResponse": {
      "type": "object",
      "description": "Result payload for changing selected fields of a reusable prompt fragment.",
      "properties": {
        "fragment": {
          "description": "Reusable prompt fragment returned by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PromptFragment"
            }
          ]
        }
      }
    },
    "llm_v1_services_agent_profile_v1_DeletePromptFragmentRequest": {
      "type": "object",
      "description": "Inputs for removing a reusable prompt fragment from the project library.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "fragmentId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the reusable prompt fragment.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "fragmentId"
      ],
      "required": [
        "fragmentId"
      ]
    },
    "llm_v1_services_agent_profile_v1_DeletePromptFragmentResponse": {
      "type": "object",
      "description": "Response schema for removing a reusable prompt fragment from the project library; no response fields are declared.",
      "properties": {}
    },
    "llm_v1_services_agent_profile_v1_ImportAgentProfilesRequest": {
      "type": "object",
      "description": "Inputs for converting a source prompt library into project profiles. Every shared block referenced by an include must be supplied in fragments so the importer can resolve the library.",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Identifier of the project associated with the operation.",
          "x-presence": "implicit"
        },
        "templates": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_SourcePromptTemplate"
          },
          "description": "Source persona templates to convert into conversational agent profiles.",
          "x-presence": "collection"
        },
        "fragments": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_SourcePromptFragment"
          },
          "description": "Shared @include blocks.",
          "x-presence": "collection"
        },
        "variableTypes": {
          "type": "object",
          "additionalProperties": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "VAR_TYPE_STRING",
                  "VAR_TYPE_NUMBER",
                  "VAR_TYPE_BOOL",
                  "VAR_TYPE_LIST"
                ],
                "x-enumDescriptions": {
                  "VAR_TYPE_STRING": "Treat the variable as text in the template context.",
                  "VAR_TYPE_NUMBER": "Coerce the variable to a numeric value for arithmetic or numeric comparisons.\n\nfloat64 in the template context (gt/lt/ge…)",
                  "VAR_TYPE_BOOL": "Coerce the variable to a boolean for template conditions.\n\ntruthiness in \\{\\{if …}}",
                  "VAR_TYPE_LIST": "Provide a list that templates can iterate or join.\n\n\\[]interface\\{} — joinable, rangeable"
                }
              },
              {
                "type": "integer",
                "format": "int32"
              }
            ],
            "x-enum-values": [
              {
                "name": "VAR_TYPE_STRING",
                "number": 0,
                "canonical": true,
                "description": "Treat the variable as text in the template context."
              },
              {
                "name": "VAR_TYPE_NUMBER",
                "number": 1,
                "canonical": true,
                "description": "Coerce the variable to a numeric value for arithmetic or numeric comparisons.\n\nfloat64 in the template context (gt/lt/ge…)"
              },
              {
                "name": "VAR_TYPE_BOOL",
                "number": 2,
                "canonical": true,
                "description": "Coerce the variable to a boolean for template conditions.\n\ntruthiness in \\{\\{if …}}"
              },
              {
                "name": "VAR_TYPE_LIST",
                "number": 3,
                "canonical": true,
                "description": "Provide a list that templates can iterate or join.\n\n\\[]interface\\{} — joinable, rangeable"
              }
            ],
            "x-enum-description": "Type used to coerce a prompt variable before placing it in the template context. It determines creation-time validation, the authoring control, and how comparisons and joining values behave.",
            "description": "Type used to coerce a prompt variable before placing it in the template context. It determines creation-time validation, the authoring control, and how comparisons and joining values behave."
          },
          "description": "Optional variable type hints that override types inferred from template usage.",
          "x-presence": "collection"
        },
        "overwrite": {
          "type": "boolean",
          "description": "Update existing profiles and fragments instead of failing ALREADY\\_EXISTS. An existing profile takes the imported prompt, variable specs, name, when\\_to\\_use, keywords and the generation settings the template sets; its model, MCP servers, description and enabled state are kept.",
          "x-presence": "implicit"
        },
        "emitFragments": {
          "type": "boolean",
          "description": "When false, the default, resolve source includes inline into each profile’s system prompt without writing shared fragment rows. When true, emit supplied shared blocks as prompt fragments and reference them through template actions; every referenced shared block must be supplied.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_common_v1_SourcePromptTemplate": {
      "type": "object",
      "description": "Source persona template to convert into an agent profile during import. Its source\\_dsl contains the original template syntax from which the importer derives the profile template and variable specifications.",
      "properties": {
        "profileId": {
          "type": "string",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name for the imported agent profile.",
          "x-presence": "implicit"
        },
        "whenToUse": {
          "type": "string",
          "description": "Instructions describing when the imported agent profile should be selected.",
          "x-presence": "implicit"
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Keywords associated with selection of the imported agent profile.",
          "x-presence": "collection"
        },
        "sourceDsl": {
          "type": "string",
          "description": "Raw source-DSL system prompt.",
          "x-presence": "implicit"
        },
        "generationConfig": {
          "description": "Generation settings other than the prompt, such as temperature. Must not set model or models: import refuses a template that does, and the model is set afterwards with UpdateAgentProfile.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "SourcePromptTemplate",
        "url": "/api/models/schema-pjk9r8rn5b#request"
      }
    },
    "llm_v1_common_v1_SourcePromptFragment": {
      "type": "object",
      "description": "Shared template block supplied for import. Its path resolves source include directives; fragment\\_id supplies the stable output identity when shared fragments are emitted, or is derived from the path when omitted.",
      "properties": {
        "fragmentId": {
          "type": "string",
          "description": "Identifier of the reusable prompt fragment.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name for the imported reusable prompt fragment.",
          "x-presence": "implicit"
        },
        "sourceDsl": {
          "type": "string",
          "description": "Raw source text (may itself contain @include / metadata comments).",
          "x-presence": "implicit"
        },
        "path": {
          "type": "string",
          "description": "Include path, e.g. \"\\_shared/safety-module.txt\"",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "SourcePromptFragment",
        "url": "/api/models/schema-ohqh497pal#request"
      }
    },
    "llm_v1_services_agent_profile_v1_ImportAgentProfilesResponse": {
      "type": "object",
      "description": "Result payload for converting and importing source prompt templates into project agent profiles.",
      "properties": {
        "profiles": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_AgentProfile"
          },
          "description": "Converted + stored (echo).",
          "x-presence": "collection"
        },
        "fragments": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_PromptFragment"
          },
          "description": "Reusable prompt fragments returned by the operation.",
          "x-presence": "collection"
        }
      }
    },
    "platform_v1_services_enduser_gateway_v1_UpdateLocationRequest": {
      "type": "object",
      "description": "Gateway requests: same payloads as the internal service, minus EndUserRef.\n\nInputs for updating the end user's geographic coordinates.",
      "properties": {
        "latitude": {
          "type": "number",
          "format": "double",
          "minimum": -90,
          "maximum": 90,
          "description": "Latitude of the location in decimal degrees.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "double": {
              "lte": 90,
              "gte": -90
            }
          },
          "x-validation-scope": "request"
        },
        "longitude": {
          "type": "number",
          "format": "double",
          "minimum": -180,
          "maximum": 180,
          "description": "Longitude of the location in decimal degrees.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "double": {
              "lte": 180,
              "gte": -180
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "platform_v1_services_enduser_v1_UpdateLocationResponse": {
      "type": "object",
      "description": "Result of updating the end user's geographic coordinates.",
      "properties": {
        "location": {
          "description": "Coordinates and derived location metadata stored for the end user. Includes derived IANA timezone.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_enduser_v1_Location"
            }
          ]
        }
      }
    },
    "platform_v1_services_enduser_v1_Location": {
      "type": "object",
      "description": "End-user coordinates and associated location metadata.",
      "properties": {
        "latitude": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Latitude of the location in decimal degrees.",
          "x-presence": "implicit"
        },
        "longitude": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Longitude of the location in decimal degrees.",
          "x-presence": "implicit"
        },
        "city": {
          "type": "string",
          "description": "City associated with the location; currently left empty because reverse geocoding is not implemented.",
          "x-presence": "implicit"
        },
        "timezone": {
          "type": "string",
          "description": "IANA time zone associated with the location, derived from its coordinates server-side.",
          "x-presence": "implicit"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time this record was most recently updated.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "Location",
        "url": "/api/models/schema-1kvbjenggb#response"
      }
    },
    "platform_v1_services_enduser_gateway_v1_UpdateLocaleRequest": {
      "type": "object",
      "description": "Inputs for updating the end user's locale preference.\n\n### Input constraints\n\n### locale\n\nThe locale value may be empty text. Otherwise it must start with two or three ASCII letters, followed by zero or more segments each consisting of a hyphen and two through eight ASCII letters or digits. No other characters or segments are accepted.",
      "properties": {
        "locale": {
          "type": "string",
          "pattern": "^$|^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
          "description": "BCP-47 locale override, such as \"es-MX\". Empty string clears the override.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^$|^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "platform_v1_services_enduser_v1_UpdateLocaleResponse": {
      "type": "object",
      "description": "Result of updating the end user's locale preference. This schema declares no result fields.",
      "properties": {}
    },
    "platform_v1_services_enduser_gateway_v1_UpdateDefaultGenerationConfigRequest": {
      "type": "object",
      "description": "Inputs for updating default model generation settings.",
      "properties": {
        "config": {
          "description": "Default generation settings restricted to these user-settable fields: model, models, temperature, top\\_p, max\\_output\\_tokens, frequency\\_penalty, presence\\_penalty, stop\\_sequences, seed and language\\_preference. Recognized fields outside this list, including operational settings for prompts, tools, MCP and timeouts, reject the whole request. New GenerationConfig fields are rejected unless added to this allowlist. Each model must also be permitted by the platform model allowlist. Unknown JSON names may be discarded before these checks; they are not supported configuration settings.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ],
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "config"
      ],
      "required": [
        "config"
      ]
    },
    "platform_v1_services_enduser_v1_UpdateDefaultGenerationConfigResponse": {
      "type": "object",
      "description": "Result of updating default model generation settings. This schema declares no result fields.",
      "properties": {}
    },
    "platform_v1_services_enduser_gateway_v1_UpdateMetadataRequest": {
      "type": "object",
      "description": "Inputs for updating the end user's profile metadata.",
      "properties": {
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Application-defined key-value metadata associated with the end user.",
          "x-presence": "collection"
        }
      }
    },
    "platform_v1_services_enduser_v1_UpdateMetadataResponse": {
      "type": "object",
      "description": "Result of updating the end user's profile metadata. This schema declares no result fields.",
      "properties": {}
    },
    "platform_v1_services_enduser_gateway_v1_GetEndUserRequest": {
      "type": "object",
      "description": "Inputs for retrieving an end-user identity and profile record. This schema declares no request fields.",
      "properties": {}
    },
    "platform_v1_services_enduser_v1_GetEndUserResponse": {
      "type": "object",
      "description": "Result of retrieving an end-user identity and profile record. If no record exists, the returned end-user state is empty.",
      "properties": {
        "endUser": {
          "description": "End-user identity and profile returned by the lookup. An empty message is returned when no matching end user exists.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_enduser_v1_EndUserState"
            }
          ]
        }
      }
    },
    "platform_v1_services_enduser_v1_EndUserState": {
      "type": "object",
      "description": "Captured identity claims and editable profile values for a tenant's end user. Identity claims are copied from the verified token and are read-only through the profile update operations. Location, locale overrides, generation preferences and application metadata are set through their corresponding profile update operations.",
      "properties": {
        "subject": {
          "type": "string",
          "description": "Subject claim identifying the end user within the identity provider.",
          "x-presence": "implicit"
        },
        "tenantId": {
          "type": "string",
          "description": "Identifier of the tenant that owns or scopes this record.",
          "x-presence": "implicit"
        },
        "issuer": {
          "type": "string",
          "description": "OIDC issuer identifying the identity provider.",
          "x-presence": "implicit"
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the project within the tenant that scopes this record.",
          "x-presence": "implicit"
        },
        "email": {
          "type": "string",
          "description": "Email address received from the identity provider.",
          "x-presence": "implicit"
        },
        "emailVerified": {
          "type": "boolean",
          "description": "Whether the identity provider marked the email address as verified.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Full name received from the identity provider.",
          "x-presence": "implicit"
        },
        "givenName": {
          "type": "string",
          "description": "Given-name claim received from the identity provider.",
          "x-presence": "implicit"
        },
        "familyName": {
          "type": "string",
          "description": "Family-name claim received from the identity provider.",
          "x-presence": "implicit"
        },
        "preferredUsername": {
          "type": "string",
          "description": "Preferred username claim received from the identity provider.",
          "x-presence": "implicit"
        },
        "picture": {
          "type": "string",
          "description": "Profile picture URL received from the identity provider.",
          "x-presence": "implicit"
        },
        "phoneNumber": {
          "type": "string",
          "description": "Telephone number received from the identity provider.",
          "x-presence": "implicit"
        },
        "phoneNumberVerified": {
          "type": "boolean",
          "description": "Whether the identity provider marked the telephone number as verified.",
          "x-presence": "implicit"
        },
        "signInProvider": {
          "type": "string",
          "description": "Sign-in provider recorded with the captured identity.",
          "x-presence": "implicit"
        },
        "authMethod": {
          "type": "string",
          "description": "Authentication method recorded with the captured identity.",
          "x-presence": "implicit"
        },
        "locale": {
          "type": "string",
          "description": "Locale preference associated with the user or subscriber. IdP-sourced default (not the override).",
          "x-presence": "implicit"
        },
        "zoneinfo": {
          "type": "string",
          "description": "Time zone claim received from the identity provider. IdP-sourced default.",
          "x-presence": "implicit"
        },
        "customClaims": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional identity claims represented as string key-value pairs. The current end-user store does not populate this field.",
          "x-presence": "collection"
        },
        "location": {
          "description": "Coordinates and derived location metadata selected by the end user.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_enduser_v1_Location"
            }
          ]
        },
        "localeOverride": {
          "type": "string",
          "description": "Locale explicitly selected by the end user. When set, takes precedence over the identity provider's locale; when empty, the identity-provider locale is used.",
          "x-presence": "implicit"
        },
        "defaultGenerationConfig": {
          "description": "Default model generation settings associated with the end-user profile.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig"
            }
          ]
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Application-defined key-value metadata associated with the end user.",
          "x-presence": "collection"
        },
        "firstSeenAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time the end-user identity was first captured.",
          "x-presence": "message"
        },
        "lastSeenAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time the end user's identity was most recently observed.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time this record was most recently updated.",
          "x-presence": "message"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time this record was created.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "EndUserState",
        "url": "/api/models/schema-1l1et4gp2i#response"
      }
    },
    "platform_v1_services_secretmanager_v1_PutSecretRequest": {
      "type": "object",
      "description": "Inputs for writing a project secret and its metadata.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9._-]{0,62}$",
          "description": "Name identifying the secret within its project.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^[a-z0-9][a-z0-9._-]{0,62}$"
            }
          },
          "x-validation-scope": "request"
        },
        "value": {
          "type": "string",
          "minLength": 1,
          "description": "Secret value, limited to 64 KiB of UTF-8 bytes. Binary material is supplied as base64 by caller convention. Read operations return metadata without the secret value.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1",
              "maxBytes": "65536"
            }
          },
          "x-validation-scope": "request"
        },
        "description": {
          "type": "string",
          "maxLength": 1024,
          "description": "Human-readable explanation of the secret.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "1024"
            }
          },
          "x-validation-scope": "request"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Free-form labels used to organize and identify secrets.",
          "x-presence": "collection"
        }
      },
      "x-request-required": [
        "name",
        "value"
      ],
      "required": [
        "name",
        "value"
      ]
    },
    "platform_v1_services_secretmanager_v1_PutSecretResponse": {
      "type": "object",
      "description": "Stored metadata returned after writing a project secret; the secret value is not returned.",
      "properties": {
        "metadata": {
          "description": "Stored secret metadata; the secret value is not returned.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_secretmanager_v1_SecretMetadata"
            }
          ]
        }
      }
    },
    "platform_v1_services_secretmanager_v1_SecretMetadata": {
      "type": "object",
      "description": "Metadata returned by secret read operations. Secret values are not included.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name identifying the secret within its project.",
          "x-presence": "implicit"
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the project within the tenant that scopes this secret. `default` identifies the default project.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable explanation of the secret.",
          "x-presence": "implicit"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Free-form labels used to organize and identify secrets. Free-form, e.g. \\{\"kind\": \"mcp-auth\"}.",
          "x-presence": "collection"
        },
        "version": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Version number of the stored secret metadata. Increments on every PutSecret.",
          "x-presence": "implicit"
        },
        "createdBy": {
          "type": "string",
          "description": "Subject identifier recorded for the creator of this record. Subject from the X-User-ID header, when present.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time this record was most recently updated.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "SecretMetadata",
        "url": "/api/models/schema-1lhjc44i8n#response"
      }
    },
    "platform_v1_services_secretmanager_v1_GetSecretMetadataRequest": {
      "type": "object",
      "description": "Selects a project secret whose metadata is returned without its value.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9._-]{0,62}$",
          "description": "Name identifying the secret within its project.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^[a-z0-9][a-z0-9._-]{0,62}$"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "name"
      ],
      "required": [
        "name"
      ]
    },
    "platform_v1_services_secretmanager_v1_GetSecretMetadataResponse": {
      "type": "object",
      "description": "Result of retrieving metadata for a project secret without its secret value.",
      "properties": {
        "metadata": {
          "description": "Stored secret metadata; the secret value is not returned.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/platform_v1_services_secretmanager_v1_SecretMetadata"
            }
          ]
        }
      }
    },
    "platform_v1_services_secretmanager_v1_ListSecretsRequest": {
      "type": "object",
      "description": "Pagination settings for listing secret metadata within the current project.",
      "properties": {
        "page": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Page number requested from the backing service.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of secret metadata entries requested per page. Zero or omission lets the server choose the page size.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        }
      }
    },
    "platform_v1_services_secretmanager_v1_ListSecretsResponse": {
      "type": "object",
      "description": "Page of metadata for project secrets, without their values.",
      "properties": {
        "secrets": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/platform_v1_services_secretmanager_v1_SecretMetadata"
          },
          "description": "Secret metadata records returned by the listing; secret values are excluded.",
          "x-presence": "collection"
        },
        "total": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of records reported for this listing.",
          "x-presence": "implicit"
        }
      }
    },
    "platform_v1_services_secretmanager_v1_DeleteSecretRequest": {
      "type": "object",
      "description": "Selects a project secret to delete and whether to override reference checks.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9._-]{0,62}$",
          "description": "Name identifying the secret within its project.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^[a-z0-9][a-z0-9._-]{0,62}$"
            }
          },
          "x-validation-scope": "request"
        },
        "force": {
          "type": "boolean",
          "description": "Delete even when custom MCP servers still reference this secret. Those servers then fail closed the next time they try to resolve it.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "name"
      ],
      "required": [
        "name"
      ]
    },
    "platform_v1_services_secretmanager_v1_DeleteSecretResponse": {
      "type": "object",
      "description": "Result of deleting a project secret.",
      "properties": {
        "deleted": {
          "type": "boolean",
          "description": "False when the secret did not exist; the call still succeeds.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_CreateFolderRequest": {
      "type": "object",
      "description": "Inputs for creating a folder entry in the user’s storage namespace.",
      "properties": {
        "folderPath": {
          "type": "string",
          "description": "Path of the folder within the user’s storage namespace.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional attributes associated with the resource.",
          "x-presence": "collection"
        }
      }
    },
    "storage_v1_services_gateway_v1_CreateFolderResponse": {
      "type": "object",
      "description": "Result payload for creating a folder entry in the user’s storage namespace.",
      "properties": {
        "folder": {
          "description": "Metadata for the folder affected by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_common_v1_FolderInfo"
            }
          ]
        },
        "created": {
          "type": "boolean",
          "description": "Whether this operation created a new folder.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_common_v1_FolderInfo": {
      "type": "object",
      "description": "FolderInfo contains metadata about a folder",
      "properties": {
        "folderId": {
          "type": "string",
          "description": "Unique folder ID.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Name of the folder within its parent folder.\n\nFolder name",
          "x-presence": "implicit"
        },
        "path": {
          "type": "string",
          "description": "Full path (e.g., \"/documents/work\").",
          "x-presence": "implicit"
        },
        "parentPath": {
          "type": "string",
          "description": "Parent folder path.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "description": "RFC3339 timestamp.",
          "x-presence": "implicit"
        },
        "modifiedAt": {
          "type": "string",
          "description": "RFC3339 timestamp.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata.",
          "x-presence": "collection"
        },
        "fileCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of files (direct children).",
          "x-presence": "implicit"
        },
        "subfolderCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of subfolders.",
          "x-presence": "implicit"
        },
        "totalSizeBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total size of all files in folder (recursive).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "FolderInfo",
        "url": "/api/models/schema-opsbitjge1#response"
      }
    },
    "storage_v1_services_gateway_v1_DeleteFolderRequest": {
      "type": "object",
      "description": "Inputs for removing a folder entry and optionally its descendant content.",
      "properties": {
        "folderPath": {
          "type": "string",
          "description": "Path of the folder within the user’s storage namespace.",
          "x-presence": "implicit"
        },
        "recursive": {
          "type": "boolean",
          "description": "Whether the operation includes descendant folders and their contents.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_DeleteFolderResponse": {
      "type": "object",
      "description": "Result payload for removing a folder entry and optionally its descendant content.",
      "properties": {
        "deleted": {
          "type": "boolean",
          "description": "Whether the deletion operation reports the resource removed.",
          "x-presence": "implicit"
        },
        "filesDeleted": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of files reported deleted by the operation.",
          "x-presence": "implicit"
        },
        "foldersDeleted": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of folders reported deleted by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_ListFilesRequest": {
      "type": "object",
      "description": "Inputs for paging through files and subfolders with metadata filters.",
      "properties": {
        "folderPath": {
          "type": "string",
          "description": "Path of the folder within the user’s storage namespace.",
          "x-presence": "implicit"
        },
        "recursive": {
          "type": "boolean",
          "description": "Whether the operation includes descendant folders and their contents.",
          "x-presence": "implicit"
        },
        "pageSize": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of entries requested per page.",
          "x-presence": "implicit"
        },
        "pageToken": {
          "type": "string",
          "description": "Continuation token from a preceding page of results.",
          "x-presence": "implicit"
        },
        "filter": {
          "description": "Selection criteria applied to the listing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_services_gateway_v1_FileFilter"
            }
          ]
        }
      }
    },
    "storage_v1_services_gateway_v1_FileFilter": {
      "type": "object",
      "description": "Name, extension, tag and size criteria for selecting stored files. Upload-time fields are accepted but are not applied by the current list and search handlers.",
      "properties": {
        "extensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "File extensions used to restrict matching files.",
          "x-presence": "collection"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the resource for organization or filtering.",
          "x-presence": "collection"
        },
        "minSizeBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Minimum file size included by the filter, in bytes.",
          "x-presence": "implicit"
        },
        "maxSizeBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum file size included by the filter, in bytes.",
          "x-presence": "implicit"
        },
        "uploadedAfter": {
          "type": "string",
          "description": "Declared lower upload-time bound. The current list-files and search-files handlers accept this field but do not apply it. Do not rely on it to exclude files by date; inspect returned timestamps and the operation’s result limits.",
          "x-presence": "implicit"
        },
        "uploadedBefore": {
          "type": "string",
          "description": "Declared upper upload-time bound. The current list-files and search-files handlers accept this field but do not apply it. Do not rely on it to exclude files by date; inspect returned timestamps and the operation’s result limits.",
          "x-presence": "implicit"
        },
        "nameContains": {
          "type": "string",
          "description": "Text that must occur in the selected file’s name.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "FileFilter",
        "url": "/api/models/schema-oq26kmqtvq#request"
      }
    },
    "storage_v1_services_gateway_v1_ListFilesResponse": {
      "type": "object",
      "description": "Result payload for paging through files and subfolders with metadata filters.",
      "properties": {
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/storage_v1_common_v1_FileInfo"
          },
          "description": "File metadata records returned by the listing or search.",
          "x-presence": "collection"
        },
        "folders": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/storage_v1_common_v1_FolderInfo"
          },
          "description": "Folder metadata records returned by the listing.",
          "x-presence": "collection"
        },
        "nextPageToken": {
          "type": "string",
          "description": "Continuation token returned for retrieving the next page.",
          "x-presence": "implicit"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total number of matching entries reported by the operation.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_common_v1_FileInfo": {
      "type": "object",
      "description": "FileInfo contains metadata about a file",
      "properties": {
        "fileId": {
          "type": "string",
          "description": "Stable identifier of the stored file.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Name of the file within its containing folder.",
          "x-presence": "implicit"
        },
        "path": {
          "type": "string",
          "description": "Full path (e.g., \"/documents/report.pdf\").",
          "x-presence": "implicit"
        },
        "folderPath": {
          "type": "string",
          "description": "Parent folder path.",
          "x-presence": "implicit"
        },
        "sizeBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Size of the file content, in bytes.",
          "x-presence": "implicit"
        },
        "contentType": {
          "type": "string",
          "description": "Media type of the file content.",
          "x-presence": "implicit"
        },
        "uploadedAt": {
          "type": "string",
          "description": "RFC3339 timestamp.",
          "x-presence": "implicit"
        },
        "modifiedAt": {
          "type": "string",
          "description": "RFC3339 timestamp.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata.",
          "x-presence": "collection"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User-defined tags.",
          "x-presence": "collection"
        },
        "description": {
          "type": "string",
          "description": "Optional description.",
          "x-presence": "implicit"
        },
        "storageRef": {
          "description": "Reference to actual storage location.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_common_v1_ObjectRef"
            }
          ]
        },
        "checksum": {
          "type": "string",
          "description": "File checksum (SHA256).",
          "x-presence": "implicit"
        },
        "version": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Version number (for versioning support).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "FileInfo",
        "url": "/api/models/schema-1lls6fo8p7#response"
      }
    },
    "storage_v1_common_v1_ObjectRef": {
      "type": "object",
      "description": "ObjectRef references an object in storage",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Storage bucket containing the object.",
          "x-presence": "implicit"
        },
        "key": {
          "type": "string",
          "description": "Object key within the selected storage bucket.",
          "x-presence": "implicit"
        },
        "provider": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "STORAGE_PROVIDER_GCS",
                "STORAGE_PROVIDER_S3",
                "STORAGE_PROVIDER_FILESYSTEM",
                "STORAGE_PROVIDER_AZURE_BLOB"
              ],
              "x-enumDescriptions": {
                "STORAGE_PROVIDER_GCS": "Google Cloud Storage.",
                "STORAGE_PROVIDER_S3": "Amazon S3 or a storage service implementing the S3 interface.\n\nAmazon S3 (and compatibles)",
                "STORAGE_PROVIDER_FILESYSTEM": "A filesystem accessible to the storage service.\n\nLocal filesystem",
                "STORAGE_PROVIDER_AZURE_BLOB": "Azure Blob Storage."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "STORAGE_PROVIDER_GCS",
              "number": 0,
              "canonical": true,
              "description": "Google Cloud Storage."
            },
            {
              "name": "STORAGE_PROVIDER_S3",
              "number": 1,
              "canonical": true,
              "description": "Amazon S3 or a storage service implementing the S3 interface.\n\nAmazon S3 (and compatibles)"
            },
            {
              "name": "STORAGE_PROVIDER_FILESYSTEM",
              "number": 2,
              "canonical": true,
              "description": "A filesystem accessible to the storage service.\n\nLocal filesystem"
            },
            {
              "name": "STORAGE_PROVIDER_AZURE_BLOB",
              "number": 3,
              "canonical": true,
              "description": "Azure Blob Storage."
            }
          ],
          "x-enum-description": "Backend that stores the file bytes associated with a storage record.",
          "description": "Storage provider used to access the object.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "ObjectRef",
        "url": "/api/models/schema-1lj1ellabu#response"
      }
    },
    "storage_v1_services_gateway_v1_UploadFileRequest": {
      "type": "object",
      "description": "Inputs for uploading file content and recording its metadata in the selected folder.",
      "properties": {
        "folderPath": {
          "type": "string",
          "description": "Path of the folder within the user’s storage namespace.",
          "x-presence": "implicit"
        },
        "fileName": {
          "type": "string",
          "description": "File name to use within the selected folder.",
          "x-presence": "implicit"
        },
        "content": {
          "type": "string",
          "format": "byte",
          "description": "Raw bytes of the file being uploaded.",
          "x-presence": "implicit"
        },
        "contentType": {
          "type": "string",
          "description": "Media type of the uploaded file.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional attributes associated with the resource.",
          "x-presence": "collection"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the resource for organization or filtering.",
          "x-presence": "collection"
        }
      }
    },
    "storage_v1_services_gateway_v1_UploadFileResponse": {
      "type": "object",
      "description": "Result payload for uploading file content and recording its metadata in the selected folder.",
      "properties": {
        "file": {
          "description": "Metadata for the file affected or retrieved by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_common_v1_FileInfo"
            }
          ]
        },
        "uploaded": {
          "type": "boolean",
          "description": "Whether the file upload operation reports completion.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_DeleteFileRequest": {
      "type": "object",
      "description": "Inputs for removing a stored file and its tracked metadata.",
      "properties": {
        "fileId": {
          "type": "string",
          "description": "Stable identifier of the stored file.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_DeleteFileResponse": {
      "type": "object",
      "description": "Result payload for removing a stored file and its tracked metadata.",
      "properties": {
        "deleted": {
          "type": "boolean",
          "description": "Whether the deletion operation reports the resource removed.",
          "x-presence": "implicit"
        },
        "spaceFreedBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Storage capacity reported freed by deletion, in bytes.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_MoveFileRequest": {
      "type": "object",
      "description": "MoveFileRequest moves/renames a file (identity is the file\\_id; path is a label)",
      "properties": {
        "fileId": {
          "type": "string",
          "description": "Stable identifier of the stored file.",
          "x-presence": "implicit"
        },
        "destinationFolder": {
          "type": "string",
          "description": "Destination folder path for the file move.",
          "x-presence": "implicit"
        },
        "newName": {
          "type": "string",
          "description": "Replacement file name for the moved file. Omit to preserve its current name.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_MoveFileResponse": {
      "type": "object",
      "description": "Result payload for changing a stored file’s folder location and optional name.",
      "properties": {
        "file": {
          "description": "Metadata for the file affected or retrieved by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_common_v1_FileInfo"
            }
          ]
        },
        "moved": {
          "type": "boolean",
          "description": "Whether the file move operation reports completion.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_GetFileMetadataRequest": {
      "type": "object",
      "description": "Inputs for reading a stored file’s attributes without downloading its content.",
      "properties": {
        "fileId": {
          "type": "string",
          "description": "Stable identifier of the stored file.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_GetFileMetadataResponse": {
      "type": "object",
      "description": "Result payload for reading a stored file’s attributes without downloading its content.",
      "properties": {
        "file": {
          "description": "Metadata for the file affected or retrieved by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_common_v1_FileInfo"
            }
          ]
        }
      }
    },
    "storage_v1_services_gateway_v1_UpdateFileMetadataRequest": {
      "type": "object",
      "description": "Inputs for changing labels, description, or custom attributes of a stored file.",
      "properties": {
        "fileId": {
          "type": "string",
          "description": "Stable identifier of the stored file.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional attributes associated with the resource.",
          "x-presence": "collection"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the resource for organization or filtering.",
          "x-presence": "collection"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the resource.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_UpdateFileMetadataResponse": {
      "type": "object",
      "description": "Result payload for changing labels, description, or custom attributes of a stored file.",
      "properties": {
        "file": {
          "description": "Metadata for the file affected or retrieved by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_common_v1_FileInfo"
            }
          ]
        },
        "updated": {
          "type": "boolean",
          "description": "Whether the file metadata update reports a change.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_GetStorageQuotaRequest": {
      "type": "object",
      "description": "Inputs for reading the user’s allocated capacity and current storage usage.",
      "properties": {}
    },
    "storage_v1_services_gateway_v1_GetStorageQuotaResponse": {
      "type": "object",
      "description": "Result payload for reading the user’s allocated capacity and current storage usage.",
      "properties": {
        "usedBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Storage capacity currently attributed to the user, in bytes.",
          "x-presence": "implicit"
        },
        "quotaBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Storage capacity allocated to the user, in bytes.",
          "x-presence": "implicit"
        },
        "fileCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of files represented by this quota snapshot.",
          "x-presence": "implicit"
        },
        "folderCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of folders represented by the quota snapshot.",
          "x-presence": "implicit"
        },
        "usagePercentage": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Storage usage expressed as a percentage of the quota.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_SearchFilesRequest": {
      "type": "object",
      "description": "Inputs for finding stored files by query text and metadata constraints.",
      "properties": {
        "query": {
          "type": "string",
          "description": "Search expression used to select matching entries.",
          "x-presence": "implicit"
        },
        "filter": {
          "description": "Selection criteria applied to the listing.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_services_gateway_v1_FileFilter"
            }
          ]
        },
        "maxResults": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of file matches requested.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_SearchFilesResponse": {
      "type": "object",
      "description": "Result payload for finding stored files by query text and metadata constraints.",
      "properties": {
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/storage_v1_common_v1_FileInfo"
          },
          "description": "File metadata records returned by the listing or search.",
          "x-presence": "collection"
        },
        "totalMatches": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of files reported to match the search criteria.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_GenerateUploadUrlRequest": {
      "type": "object",
      "description": "Inputs for issuing a signed URL for a direct file upload.",
      "properties": {
        "folderPath": {
          "type": "string",
          "description": "Path of the folder within the user’s storage namespace.",
          "x-presence": "implicit"
        },
        "fileName": {
          "type": "string",
          "description": "File name to use within the selected folder.",
          "x-presence": "implicit"
        },
        "contentType": {
          "type": "string",
          "description": "Media type describing the file or response body.",
          "x-presence": "implicit"
        },
        "expiresSeconds": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested lifetime of the signed URL, in seconds.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional attributes associated with the resource.",
          "x-presence": "collection"
        },
        "sizeBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Declared upload size in bytes. Required (> 0): pre-checked against quota and bound into the signed URL via x-goog-content-length-range so GCS itself rejects larger uploads.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gt": "0"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "sizeBytes"
      ],
      "required": [
        "sizeBytes"
      ]
    },
    "storage_v1_services_gateway_v1_GenerateUploadUrlResponse": {
      "type": "object",
      "description": "Result payload for issuing a signed URL for a direct file upload.",
      "properties": {
        "url": {
          "type": "string",
          "description": "Signed URL used for direct file upload.",
          "x-presence": "implicit"
        },
        "fileId": {
          "type": "string",
          "description": "Stable identifier of the stored file.",
          "x-presence": "implicit"
        },
        "fullPath": {
          "type": "string",
          "description": "Complete object path allocated for the upload.",
          "x-presence": "implicit"
        },
        "requiredHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP headers the client must send with the signed upload request.",
          "x-presence": "collection"
        }
      }
    },
    "storage_v1_services_gateway_v1_RegisterUploadedFileRequest": {
      "type": "object",
      "description": "RegisterUploadedFileRequest completes the signed-URL upload flow (step 3 of 3): after PUTting bytes to the URL from GenerateUploadUrl, register the object so it becomes visible to ListFiles/GetFileMetadata/GenerateDownloadUrl.",
      "properties": {
        "fileId": {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$",
          "description": "file\\_id returned by GenerateUploadUrl (32 lowercase hex chars). The GCS key is recomputed server-side from the caller-scoped folder\\_path + file\\_id, so a caller can only ever register objects under its own prefix.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "pattern": "^[a-f0-9]{32}$"
            }
          },
          "x-validation-scope": "request"
        },
        "folderPath": {
          "type": "string",
          "description": "Must match the folder\\_path passed to GenerateUploadUrl.",
          "x-presence": "implicit"
        },
        "fileName": {
          "type": "string",
          "minLength": 1,
          "description": "File name to use within the selected folder.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional attributes associated with the resource.",
          "x-presence": "collection"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the resource for organization or filtering.",
          "x-presence": "collection"
        }
      },
      "x-request-required": [
        "fileId",
        "fileName"
      ],
      "required": [
        "fileId",
        "fileName"
      ]
    },
    "storage_v1_services_gateway_v1_RegisterUploadedFileResponse": {
      "type": "object",
      "description": "Result payload for recording metadata for a file uploaded directly to storage.",
      "properties": {
        "file": {
          "description": "Metadata for the file affected or retrieved by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_common_v1_FileInfo"
            }
          ]
        },
        "registered": {
          "type": "boolean",
          "description": "true when newly registered; false when the file\\_id was already registered (idempotent retry — the existing FileInfo is returned unchanged).",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_GenerateDownloadUrlRequest": {
      "type": "object",
      "description": "Inputs for issuing a signed URL for downloading a stored file.",
      "properties": {
        "fileId": {
          "type": "string",
          "description": "Stable file ID to resolve to a signed URL.",
          "x-presence": "implicit"
        },
        "expiresSeconds": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested lifetime of the signed URL, in seconds.",
          "x-presence": "implicit"
        },
        "responseContentDisposition": {
          "type": "string",
          "description": "Content-Disposition override requested for the signed download response. Use attachment with a filename to request a download under that name.",
          "x-presence": "implicit"
        }
      }
    },
    "storage_v1_services_gateway_v1_GenerateDownloadUrlResponse": {
      "type": "object",
      "description": "Result payload for issuing a signed URL for downloading a stored file.",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL associated with the resource or outbound request.",
          "x-presence": "implicit"
        },
        "file": {
          "description": "Metadata for the file affected or retrieved by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_common_v1_FileInfo"
            }
          ]
        }
      }
    },
    "storage_v1_services_gateway_v1_BatchGenerateDownloadUrlsRequest": {
      "type": "object",
      "description": "Inputs for issuing signed download URLs for a collection of files.",
      "properties": {
        "fileIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1,
          "maxItems": 50,
          "description": "File IDs to resolve (1-50 per batch).",
          "x-presence": "collection",
          "x-protovalidate": {
            "repeated": {
              "minItems": "1",
              "maxItems": "50"
            }
          },
          "x-validation-scope": "request"
        },
        "expiresSeconds": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Requested lifetime of the signed URL, in seconds.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "fileIds"
      ],
      "required": [
        "fileIds"
      ]
    },
    "storage_v1_services_gateway_v1_BatchGenerateDownloadUrlsResponse": {
      "type": "object",
      "description": "Result payload for issuing signed download URLs for a collection of files.",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/storage_v1_services_gateway_v1_FileUrlResult"
          },
          "description": "Signed download URL or item-specific error for each requested file.",
          "x-presence": "collection"
        }
      }
    },
    "storage_v1_services_gateway_v1_FileUrlResult": {
      "type": "object",
      "description": "Signed download URL or item-specific error for one requested file.",
      "properties": {
        "fileId": {
          "type": "string",
          "description": "Stable identifier of the stored file.",
          "x-presence": "implicit"
        },
        "url": {
          "type": "string",
          "description": "Signed download URL for the requested file.",
          "x-presence": "implicit"
        },
        "success": {
          "type": "boolean",
          "description": "Whether the operation reports a successful result.",
          "x-presence": "implicit"
        },
        "error": {
          "type": "string",
          "description": "Error information reported for this operation or item.",
          "x-presence": "implicit"
        },
        "contentType": {
          "type": "string",
          "description": "MIME type (e.g. \"image/jpeg\"); lets consumers pick the right content-part shape (IMAGE\\_URL vs FILE\\_URL). Empty when success = false or unknown.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "FileUrlResult",
        "url": "/api/models/schema-oq46sv4kha#response"
      }
    },
    "storage_v1_services_gateway_v1_GetStateRequest": {
      "type": "object",
      "description": "Inputs for reading the file and folder registry state in object storage.",
      "properties": {}
    },
    "storage_v1_services_gateway_v1_GetStateResponse": {
      "type": "object",
      "description": "Result payload for reading the file and folder registry state in object storage.",
      "properties": {
        "state": {
          "description": "Current storage state for the effective owner.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/storage_v1_actors_storagemanager_v1_StorageManagerState"
            }
          ]
        }
      }
    },
    "storage_v1_actors_storagemanager_v1_StorageManagerState": {
      "type": "object",
      "description": "Tracked files, folders and storage usage for the effective storage owner.",
      "properties": {
        "userId": {
          "type": "string",
          "description": "Identifier of the user associated with the operation.",
          "x-presence": "implicit"
        },
        "folders": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/components/schemas/storage_v1_common_v1_FolderInfo"
          },
          "description": "Path -> FolderInfo.",
          "x-presence": "collection"
        },
        "files": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/components/schemas/storage_v1_common_v1_FileInfo"
          },
          "description": "Path -> FileInfo.",
          "x-presence": "collection"
        },
        "totalSizeBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Combined size of the represented files, in bytes.",
          "x-presence": "implicit"
        },
        "quotaBytes": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Storage capacity allocated to the user, in bytes.",
          "x-presence": "implicit"
        },
        "totalFileCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of files tracked in the storage state.",
          "x-presence": "implicit"
        },
        "totalFolderCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of folders tracked in the storage state.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "description": "When user's storage was initialized.",
          "x-presence": "implicit"
        },
        "lastModified": {
          "type": "string",
          "description": "Last modification timestamp.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "StorageManagerState",
        "url": "/api/models/schema-phpid7698e#response"
      }
    },
    "llm_v1_services_gateway_v1_CreateThreadRequest": {
      "type": "object",
      "description": "Thread management\n\nInput for creating a conversation thread with its initial configuration.",
      "properties": {
        "title": {
          "type": "string",
          "description": "Display title of the conversation thread.",
          "x-presence": "implicit"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the conversation thread.",
          "x-presence": "collection"
        },
        "activeProfileId": {
          "type": "string",
          "description": "Agent profile selected as the conversation’s active profile at creation.",
          "x-presence": "implicit"
        },
        "activeProfileVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Immutable version of the active profile to use. Zero selects its latest version.",
          "x-presence": "implicit"
        },
        "externalId": {
          "type": "string",
          "maxLength": 255,
          "description": "Caller-supplied identifier associated with the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "255"
            }
          },
          "x-validation-scope": "request"
        },
        "defaultGenerationConfig": {
          "description": "Base model and tool configuration for turns in this conversation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ]
        },
        "conversationSettings": {
          "description": "Initial conversation settings, including prompt and integration configuration.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ConversationSettingsInput"
            }
          ]
        },
        "contextManagementSettings": {
          "description": "Optional context-management settings for the new conversation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_ContextManagementSettingsInput"
            }
          ]
        }
      }
    },
    "llm_v1_common_v1_ConversationSettingsInput": {
      "type": "object",
      "description": "Conversation-level settings controlling behavior across sends\n\n[`maxLoops`](/api/models/schema-ph6avse89k#request-field-maxloops) caps the **total number of generations** in a run — not the number of tool round trips. Default is **2**, which is what one round trip costs: a first generation to emit the tool call, a second to synthesize its result.\n\nOn the final generation the model is sent **no tools at all** (the request omits the [`tools`](/api/models/schema-1h82h7ri5p#request-field-tools) array), so it cannot emit a call there. `maxLoops: 1` therefore means a single tool-free reply — a valid way to ask for one, but not a way to get one tool round trip.",
      "properties": {
        "interruptPolicy": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "INTERRUPT_POLICY_REJECT_NEW",
                "INTERRUPT_POLICY_CANCEL_ONGOING",
                "INTERRUPT_POLICY_QUEUE",
                "INTERRUPT_POLICY_IGNORE"
              ],
              "x-enumDescriptions": {
                "INTERRUPT_POLICY_REJECT_NEW": "Reject the new send with an error while a run is active; do not append its user message.\n\nReject the new Send with an error if a run is active",
                "INTERRUPT_POLICY_CANCEL_ONGOING": "Cancel the ongoing run and start a new run for the incoming message.\n\nCancel the ongoing run and immediately start a new one with the new message",
                "INTERRUPT_POLICY_QUEUE": "Queue the incoming message to run after the current run completes.\n\nQueue the new Send; it will run after the current run completes",
                "INTERRUPT_POLICY_IGNORE": "Accept the send without persisting its message or starting a new run; let the ongoing run continue."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "INTERRUPT_POLICY_REJECT_NEW",
              "number": 0,
              "canonical": true,
              "description": "Reject the new send with an error while a run is active; do not append its user message.\n\nReject the new Send with an error if a run is active"
            },
            {
              "name": "INTERRUPT_POLICY_CANCEL_ONGOING",
              "number": 1,
              "canonical": true,
              "description": "Cancel the ongoing run and start a new run for the incoming message.\n\nCancel the ongoing run and immediately start a new one with the new message"
            },
            {
              "name": "INTERRUPT_POLICY_QUEUE",
              "number": 2,
              "canonical": true,
              "description": "Queue the incoming message to run after the current run completes.\n\nQueue the new Send; it will run after the current run completes"
            },
            {
              "name": "INTERRUPT_POLICY_IGNORE",
              "number": 3,
              "canonical": true,
              "description": "Accept the send without persisting its message or starting a new run; let the ongoing run continue."
            }
          ],
          "x-enum-description": "How a conversation handles a new send while another generation run is active.",
          "description": "Policy for an incoming message while another generation run is active.",
          "x-presence": "explicit"
        },
        "maxLoops": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Default limit on agentic generation loops for the conversation.",
          "x-presence": "implicit"
        },
        "maxParallelTools": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of tool executions allowed concurrently by this configuration.",
          "x-presence": "implicit"
        },
        "mcpServers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerReferenceInput"
          },
          "description": "MCP servers available to this conversation; used for tool discovery/filtering",
          "x-presence": "collection"
        },
        "toolPolicy": {
          "description": "Optional per-conversation tool execution policy applied to AgentConfig",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolExecutionPolicyInput"
            }
          ]
        },
        "promptVariables": {
          "type": "object",
          "additionalProperties": true,
          "description": "Typed values used when rendering profile prompt templates. Numbers, arrays, Boolean values and strings retain their respective JSON types. The values are shared by profiles in the conversation and can be refreshed with UpdatePromptVariables. Switching profiles renders the new template with the same values.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "ConversationSettings",
        "url": "/api/models/schema-ph6avse89k#request"
      }
    },
    "llm_v1_actors_conversation_v1_ContextManagementSettingsInput": {
      "type": "object",
      "description": "Configuration for context management",
      "properties": {
        "strategy": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "CONTEXT_STRATEGY_COMPACTION",
                "CONTEXT_STRATEGY_WINDOWING",
                "CONTEXT_STRATEGY_NONE"
              ],
              "x-enumDescriptions": {
                "CONTEXT_STRATEGY_COMPACTION": "Use completed compaction summaries and remaining history; fall back to windowing when no completed summary is available.",
                "CONTEXT_STRATEGY_WINDOWING": "Keep a bounded window of recent conversation messages according to the windowing configuration.",
                "CONTEXT_STRATEGY_NONE": "Pass the conversation history without applying compaction or windowing."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "CONTEXT_STRATEGY_COMPACTION",
              "number": 0,
              "canonical": true,
              "description": "Use completed compaction summaries and remaining history; fall back to windowing when no completed summary is available."
            },
            {
              "name": "CONTEXT_STRATEGY_WINDOWING",
              "number": 1,
              "canonical": true,
              "description": "Keep a bounded window of recent conversation messages according to the windowing configuration."
            },
            {
              "name": "CONTEXT_STRATEGY_NONE",
              "number": 2,
              "canonical": true,
              "description": "Pass the conversation history without applying compaction or windowing."
            }
          ],
          "x-enum-description": "How stored conversation history is selected or summarized for model context.",
          "description": "Context management strategy selected for the conversation.",
          "x-presence": "explicit"
        },
        "compactionConfig": {
          "description": "Configuration applied when summarizing the conversation context.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_CompactionConfigInput"
            }
          ]
        },
        "windowingConfig": {
          "description": "Rules selecting the message window retained in model context.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_WindowingConfigInput"
            }
          ]
        },
        "selectiveExclusionConfig": {
          "description": "Rules selecting content to omit from the model context.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_SelectiveExclusionConfigInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ContextManagementSettings",
        "url": "/api/models/schema-1hgrvsu34j#request"
      }
    },
    "llm_v1_actors_conversation_v1_CompactionConfigInput": {
      "type": "object",
      "description": "Configuration for compaction strategy",
      "properties": {
        "mode": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "COMPACTION_MODE_SYNC",
                "COMPACTION_MODE_ASYNC"
              ],
              "x-enumDescriptions": {
                "COMPACTION_MODE_SYNC": "Wait for compaction to finish before continuing the dependent operation.",
                "COMPACTION_MODE_ASYNC": "Start compaction asynchronously and apply its result when it becomes available."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "COMPACTION_MODE_SYNC",
              "number": 0,
              "canonical": true,
              "description": "Wait for compaction to finish before continuing the dependent operation."
            },
            {
              "name": "COMPACTION_MODE_ASYNC",
              "number": 1,
              "canonical": true,
              "description": "Start compaction asynchronously and apply its result when it becomes available."
            }
          ],
          "x-enum-description": "Whether context compaction blocks the triggering operation or proceeds asynchronously.",
          "description": "Context compaction mode selected by the operation.\n\nSYNC, ASYNC",
          "x-presence": "explicit"
        },
        "threshold": {
          "description": "Token-count or context-window-percentage threshold that triggers compaction.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_ThresholdConfigInput"
            }
          ]
        },
        "generationConfig": {
          "description": "Separate config for compaction LLM calls.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ]
        },
        "preserveRecent": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Messages to keep uncompacted.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "CompactionConfig",
        "url": "/api/models/schema-1hbvkcgu5m#request"
      }
    },
    "llm_v1_actors_conversation_v1_ThresholdConfigInput": {
      "type": "object",
      "description": "Threshold configuration for triggering compaction\n\ntoken\\_count and percentage are mutually exclusive alternatives. Independent tracked fields do not enforce this relationship.",
      "properties": {
        "tokenCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Absolute token limit.",
          "x-presence": "explicit"
        },
        "percentage": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "% of model's context window.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "ThresholdConfig",
        "url": "/api/models/schema-1frig4k431#request"
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.compaction_threshold",
            "message": "Threshold configuration for triggering compaction",
            "expression": "[has(this.token_count), has(this.percentage)].filter(f, f).size() <= 1"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "llm_v1_actors_conversation_v1_WindowingConfigInput": {
      "type": "object",
      "description": "Configuration for windowing strategy",
      "properties": {
        "maxMessages": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of conversation messages to retain in the context window.\n\nDefault: 100",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "WindowingConfig",
        "url": "/api/models/schema-1he7ulevif#request"
      }
    },
    "llm_v1_actors_conversation_v1_SelectiveExclusionConfigInput": {
      "type": "object",
      "description": "Configuration for selective exclusion",
      "properties": {
        "excludeToolResults": {
          "type": "boolean",
          "description": "Whether tool-result content is excluded from model context.",
          "x-presence": "implicit"
        },
        "excludeImages": {
          "type": "boolean",
          "description": "Whether image content is excluded from model context.",
          "x-presence": "implicit"
        },
        "excludeFiles": {
          "type": "boolean",
          "description": "Whether file content is excluded from model context.",
          "x-presence": "implicit"
        },
        "excludeReasoning": {
          "type": "boolean",
          "description": "When true, reasoning/thinking content parts are excluded from context",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "SelectiveExclusionConfig",
        "url": "/api/models/schema-1hc73qpaio#request"
      }
    },
    "llm_v1_services_gateway_v1_CreateThreadResponse": {
      "type": "object",
      "description": "Result of creating a conversation thread with its initial configuration.",
      "properties": {
        "thread": {
          "description": "Conversation thread returned by creation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ConversationThread"
            }
          ]
        }
      }
    },
    "llm_v1_common_v1_ConversationThread": {
      "type": "object",
      "description": "Lightweight conversation-thread registry record used for managing multiple threads.",
      "properties": {
        "threadId": {
          "type": "string",
          "description": "Identifier of the conversation thread.\n\nkey used for ConversationActorService",
          "x-presence": "implicit"
        },
        "title": {
          "type": "string",
          "description": "Display title of the conversation thread.",
          "x-presence": "implicit"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the resource for organization or filtering.",
          "x-presence": "collection"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        },
        "externalId": {
          "type": "string",
          "description": "Caller-supplied identifier associated with the conversation thread.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ConversationThread",
        "url": "/api/models/schema-1i84dsgmg6#response"
      }
    },
    "llm_v1_services_gateway_v1_ListThreadsRequest": {
      "type": "object",
      "description": "Input for listing conversation threads visible to the caller.",
      "properties": {
        "limit": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum rows per page. Zero selects the default of 50. Values greater than 200 are clamped to 200. Negative values are rejected.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "pageToken": {
          "type": "string",
          "description": "Opaque base64 cursor returned by prior call. Empty for first page.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_ListThreadsResponse": {
      "type": "object",
      "description": "Result of listing conversation threads visible to the caller.",
      "properties": {
        "threads": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_services_gateway_v1_ThreadSummary"
          },
          "description": "Conversation summaries returned for this page. An absent JSON list means this page is empty.",
          "x-presence": "collection"
        },
        "nextPageToken": {
          "type": "string",
          "description": "Opaque continuation token for requesting the next page.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_ThreadSummary": {
      "type": "object",
      "description": "Conversation summary returned by thread listing and detail operations.",
      "properties": {
        "threadId": {
          "type": "string",
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit"
        },
        "userId": {
          "type": "string",
          "description": "Identifier of the user associated with the conversation thread.",
          "x-presence": "implicit"
        },
        "title": {
          "type": "string",
          "description": "Display title of the conversation thread.",
          "x-presence": "implicit"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the conversation thread.",
          "x-presence": "collection"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "CONVERSATION_STATUS_ACTIVE",
                "CONVERSATION_STATUS_ARCHIVED"
              ],
              "x-enumDescriptions": {
                "CONVERSATION_STATUS_ACTIVE": "The conversation is in its active lifecycle state.",
                "CONVERSATION_STATUS_ARCHIVED": "The conversation has been archived; this is a stored lifecycle condition, not a generation outcome."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "CONVERSATION_STATUS_ACTIVE",
              "number": 0,
              "canonical": true,
              "description": "The conversation is in its active lifecycle state."
            },
            {
              "name": "CONVERSATION_STATUS_ARCHIVED",
              "number": 1,
              "canonical": true,
              "description": "The conversation has been archived; this is a stored lifecycle condition, not a generation outcome."
            }
          ],
          "x-enum-description": "Lifecycle condition of a stored conversation: active or archived. This is separate from the execution status of an individual generation run.",
          "description": "Lifecycle status recorded for the conversation thread.",
          "x-presence": "explicit"
        },
        "messageCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of messages recorded in the thread summary.",
          "x-presence": "implicit"
        },
        "lastMessagePreview": {
          "type": "string",
          "description": "Text preview of the most recently projected message.",
          "x-presence": "implicit"
        },
        "lastMessageAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the most recently projected message.",
          "x-presence": "message"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the conversation thread was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the conversation thread summary was last updated.",
          "x-presence": "message"
        },
        "externalId": {
          "type": "string",
          "description": "Caller-supplied identifier associated with the conversation thread.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ThreadSummary",
        "url": "/api/models/schema-p16s9mefht#response"
      }
    },
    "llm_v1_services_gateway_v1_SendMessageRequest": {
      "type": "object",
      "description": "Conversation operations\n\nInput for starting an asynchronous generation from a user message.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "userMessage": {
          "description": "User message that starts the conversation turn. Required; its role is expected to be ROLE\\_USER.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_MessageInput"
            }
          ],
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        },
        "overrideGenerationConfig": {
          "description": "Per-call configuration overrides applied to the active profile’s configuration, or otherwise the conversation default. Supplied scalar values, including zero, empty or false, replace the base value; omitted values inherit. Empty repeated or map values inherit. Use clear\\_tools to clear inherited tools and clear\\_client\\_tools to clear inherited client tools.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ]
        },
        "setActiveProfileId": {
          "type": "string",
          "description": "Set the active agent profile for this and subsequent conversation turns.",
          "x-presence": "implicit"
        },
        "setActiveProfileVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Version of the active agent profile forwarded with this turn.",
          "x-presence": "implicit"
        },
        "overrideMcpServers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerReferenceInput"
          },
          "description": "MCP servers for this turn only. A nonempty list replaces the active profile’s or conversation’s list for tool discovery and execution; an empty list inherits the resolved configuration.",
          "x-presence": "collection"
        },
        "experiment": {
          "description": "Dataset-run attribution for a scripted evaluation turn. Leave unset for ordinary conversation traffic. An asynchronous caller must wait for the generation run to finish before scoring its result.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ExperimentContext"
            }
          ]
        }
      },
      "x-request-required": [
        "conversationKey",
        "userMessage"
      ],
      "required": [
        "conversationKey",
        "userMessage"
      ]
    },
    "llm_v1_common_v1_MessageInput": {
      "type": "object",
      "description": "Chat message\n\nAt least one of content or tool\\_calls must contain an entry; both lists may be nonempty. role must select a listed message role. Requiredness and allowed values are declared separately.",
      "properties": {
        "role": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ROLE_SYSTEM",
                "ROLE_USER",
                "ROLE_ASSISTANT",
                "ROLE_TOOL"
              ],
              "x-enumDescriptions": {
                "ROLE_SYSTEM": "Instructions or context provided as a system message.",
                "ROLE_USER": "Input supplied by the user or customer application.",
                "ROLE_ASSISTANT": "Content produced by the assistant, including its tool-call requests.",
                "ROLE_TOOL": "A tool result supplied back to the assistant."
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1,
                2,
                3
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "ROLE_SYSTEM",
              "number": 0,
              "canonical": true,
              "description": "Instructions or context provided as a system message."
            },
            {
              "name": "ROLE_USER",
              "number": 1,
              "canonical": true,
              "description": "Input supplied by the user or customer application."
            },
            {
              "name": "ROLE_ASSISTANT",
              "number": 2,
              "canonical": true,
              "description": "Content produced by the assistant, including its tool-call requests."
            },
            {
              "name": "ROLE_TOOL",
              "number": 3,
              "canonical": true,
              "description": "A tool result supplied back to the assistant."
            }
          ],
          "x-enum-description": "Participant role attached to a conversation message and forwarded in model context.",
          "description": "Role of the participant that produced the chat message.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "content": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ContentPartInput"
          },
          "description": "Content parts composing the chat message.",
          "x-presence": "collection"
        },
        "toolCalls": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolCallInput"
          },
          "description": "Assistant-to-tool invocations.",
          "x-presence": "collection"
        },
        "name": {
          "type": "string",
          "description": "Name identifying the sender of the chat message.\n\noptional sender name",
          "x-presence": "implicit"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp associated with the conversation message or event.",
          "x-presence": "message"
        },
        "messageId": {
          "type": "string",
          "description": "Unique message identifier.",
          "x-presence": "implicit"
        },
        "annotations": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_AnnotationInput"
          },
          "description": "Structured annotations (e.g., standardized web search URL citations, PDF reuse tokens)",
          "x-presence": "collection"
        },
        "sequence": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Monotonic, per-conversation sequence number for stable ordering (1-based)",
          "x-presence": "implicit"
        },
        "generatedBy": {
          "type": "string",
          "description": "Workflow run id or generator key that produced this message (e.g., workflow run key)",
          "x-presence": "implicit"
        },
        "usage": {
          "description": "Token usage for this generation (populated for assistant messages)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_UsageInput"
            }
          ]
        },
        "model": {
          "type": "string",
          "description": "Model that generated this message (e.g., \"anthropic/claude-sonnet-4\")",
          "x-presence": "implicit"
        },
        "generationContext": {
          "description": "Dynamic context that shaped this generation (memories, search params, turn info)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationContextInput"
            }
          ]
        },
        "clientContext": {
          "description": "Arbitrary client-supplied context attached by the client for this message",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ClientContextInput"
            }
          ]
        },
        "feedback": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MessageFeedbackInput"
          },
          "description": "Feedback on an assistant message, with one entry per rater identified by rated\\_by. A later rating by the same rater replaces their earlier entry.",
          "x-presence": "collection"
        },
        "sourceUserMessageId": {
          "type": "string",
          "description": "Identifier of the user message that opened this conversation turn. Generated messages in the same turn share this value; a user message carries its own message\\_id. Empty on historical messages that predate turn attribution.\n\nUse this field for turn attribution rather than inferring it from message adjacency or a client-supplied message\\_id. The generated\\_by identifier groups messages by generation run but does not identify the user message that opened the turn.",
          "x-presence": "implicit"
        },
        "finishReason": {
          "type": "string",
          "description": "Why the model stopped, verbatim from the provider: \"stop\", \"tool\\_calls\", \"length\", \"error\". Empty for historical messages.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Message",
        "url": "/api/models/schema-1j3dcf7kvu#request"
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.message_content",
            "message": "content or tool_calls required",
            "expression": "[size(this.content) > 0, size(this.tool_calls) > 0].filter(f, f).size() >= 1"
          }
        ]
      },
      "x-validation-scope": "request",
      "x-request-required": [
        "role"
      ],
      "required": [
        "role"
      ]
    },
    "llm_v1_common_v1_ContentPartInput": {
      "type": "object",
      "description": "Content parts composing a message, using a flattened structure for JSON compatibility. The `type` identifies how the content is represented; only defined content types are accepted.",
      "properties": {
        "type": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "CONTENT_PART_TYPE_TEXT",
                "CONTENT_PART_TYPE_IMAGE_URL",
                "CONTENT_PART_TYPE_IMAGE_BASE64",
                "CONTENT_PART_TYPE_FILE_ID",
                "CONTENT_PART_TYPE_FILE_PATH",
                "CONTENT_PART_TYPE_FILE_URL",
                "CONTENT_PART_TYPE_FILE_DATA_URL",
                "CONTENT_PART_TYPE_AUDIO_BASE64",
                "CONTENT_PART_TYPE_REASONING"
              ],
              "x-enumDescriptions": {
                "CONTENT_PART_TYPE_TEXT": "Plain text carried by the content part.\n\nPlain text content",
                "CONTENT_PART_TYPE_IMAGE_URL": "An image supplied through a remote URL.\n\nRemote image URL",
                "CONTENT_PART_TYPE_IMAGE_BASE64": "An image supplied as base64-encoded bytes.\n\nBase64-encoded image data",
                "CONTENT_PART_TYPE_FILE_ID": "A provider file identifier or internal storage identifier resolved before generation.\n\nFile ID — a provider file ID (e.g., OpenAI) OR an internal storage file ID; resolved to a signed FILE\\_URL just-in-time before the model-provider request",
                "CONTENT_PART_TYPE_FILE_PATH": "A reference to a local file path.\n\nLocal file path reference",
                "CONTENT_PART_TYPE_FILE_URL": "A file supplied through a public or signed URL.\n\nPublic or signed file URL (e.g., PDF URL or data: URL)",
                "CONTENT_PART_TYPE_FILE_DATA_URL": "A file embedded in a data URL, including its media type and encoded data.\n\ndata\\:application/pdf;base64,... or similar",
                "CONTENT_PART_TYPE_AUDIO_BASE64": "Base64-encoded audio; the part metadata identifies its audio format.\n\nBase64-encoded audio (metadata.format required, e.g., wav/mp3)",
                "CONTENT_PART_TYPE_REASONING": "A reasoning segment returned by a model provider, when available.\n\nReasoning/thinking content from chain-of-thought models"
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "CONTENT_PART_TYPE_TEXT",
              "number": 0,
              "canonical": true,
              "description": "Plain text carried by the content part.\n\nPlain text content"
            },
            {
              "name": "CONTENT_PART_TYPE_IMAGE_URL",
              "number": 1,
              "canonical": true,
              "description": "An image supplied through a remote URL.\n\nRemote image URL"
            },
            {
              "name": "CONTENT_PART_TYPE_IMAGE_BASE64",
              "number": 2,
              "canonical": true,
              "description": "An image supplied as base64-encoded bytes.\n\nBase64-encoded image data"
            },
            {
              "name": "CONTENT_PART_TYPE_FILE_ID",
              "number": 3,
              "canonical": true,
              "description": "A provider file identifier or internal storage identifier resolved before generation.\n\nFile ID — a provider file ID (e.g., OpenAI) OR an internal storage file ID; resolved to a signed FILE\\_URL just-in-time before the model-provider request"
            },
            {
              "name": "CONTENT_PART_TYPE_FILE_PATH",
              "number": 4,
              "canonical": true,
              "description": "A reference to a local file path.\n\nLocal file path reference"
            },
            {
              "name": "CONTENT_PART_TYPE_FILE_URL",
              "number": 5,
              "canonical": true,
              "description": "A file supplied through a public or signed URL.\n\nPublic or signed file URL (e.g., PDF URL or data: URL)"
            },
            {
              "name": "CONTENT_PART_TYPE_FILE_DATA_URL",
              "number": 6,
              "canonical": true,
              "description": "A file embedded in a data URL, including its media type and encoded data.\n\ndata\\:application/pdf;base64,... or similar"
            },
            {
              "name": "CONTENT_PART_TYPE_AUDIO_BASE64",
              "number": 7,
              "canonical": true,
              "description": "Base64-encoded audio; the part metadata identifies its audio format.\n\nBase64-encoded audio (metadata.format required, e.g., wav/mp3)"
            },
            {
              "name": "CONTENT_PART_TYPE_REASONING",
              "number": 8,
              "canonical": true,
              "description": "A reasoning segment returned by a model provider, when available.\n\nReasoning/thinking content from chain-of-thought models"
            }
          ],
          "x-enum-description": "Discriminator identifying which content representation a message part carries.",
          "description": "Kind of content carried by this message part.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "content": {
          "type": "string",
          "description": "Text content, image URL, file ID, or base64-encoded data.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional type-specific metadata (dimensions, mime\\_type, etc.).",
          "x-presence": "collection"
        },
        "cachePreferred": {
          "type": "boolean",
          "description": "Hint that this part is eligible for provider prompt caching.",
          "x-presence": "implicit"
        },
        "structuredMessage": {
          "description": "Populated on TEXT parts for structured output responses.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_StructuredMessageInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ContentPart",
        "url": "/api/models/schema-1hqi9r2bhh#request"
      }
    },
    "llm_v1_common_v1_StructuredMessageInput": {
      "type": "object",
      "description": "A structured message whose JSON payload has been validated against a declared schema. Consumers can trust that json\\_payload conforms to the schema identified by schema\\_name.\n\nInspect the run outcome before treating any message as complete. Current structured metadata is attached to a text content part through [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage); ordinary text is still present. [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage) can be absent. Use an object at the schema root and validate the exact final response your application consumes; server validation covers only the first model choice. For integers that your JSON client cannot represent exactly, define string-valued fields in your schema instead of converting them through floating point.",
      "properties": {
        "jsonPayload": {
          "type": "object",
          "additionalProperties": true,
          "description": "The validated JSON payload as a Struct (preserves types)",
          "x-presence": "message"
        },
        "schemaName": {
          "type": "string",
          "description": "Schema identifier (from ResponseFormat.schema\\_name)",
          "x-presence": "implicit"
        },
        "healed": {
          "type": "boolean",
          "description": "Whether response healing is reported for this structured message. Currently returned as false.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "StructuredMessage",
        "url": "/api/models/schema-1ho1lk4ndj#request"
      }
    },
    "llm_v1_common_v1_ToolCallInput": {
      "type": "object",
      "description": "A single structured tool call emitted by the model\n\n[`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat) is the client answer window. Expiry ends that wait and rejects late results; the timeout policy determines the outcome.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Provider-supplied call id.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Name of the tool or function being invoked.",
          "x-presence": "implicit"
        },
        "argumentsJson": {
          "type": "object",
          "additionalProperties": true,
          "description": "JSON object payload.",
          "x-presence": "message"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "TOOL_EXECUTION_STATUS_PENDING",
                "TOOL_EXECUTION_STATUS_EXECUTING",
                "TOOL_EXECUTION_STATUS_COMPLETED",
                "TOOL_EXECUTION_STATUS_FAILED",
                "TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION",
                "TOOL_EXECUTION_STATUS_CANCELLED",
                "TOOL_EXECUTION_STATUS_TIMED_OUT"
              ],
              "x-enumDescriptions": {
                "TOOL_EXECUTION_STATUS_PENDING": "The tool call is waiting to begin execution.",
                "TOOL_EXECUTION_STATUS_EXECUTING": "The tool call is currently executing.",
                "TOOL_EXECUTION_STATUS_COMPLETED": "The tool call completed successfully. This is a terminal outcome.",
                "TOOL_EXECUTION_STATUS_FAILED": "Tool execution ended unsuccessfully; inspect the tool error or end reason.",
                "TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION": "The tool call is waiting for approval before it can execute.",
                "TOOL_EXECUTION_STATUS_CANCELLED": "The tool call was cancelled before normal completion.",
                "TOOL_EXECUTION_STATUS_TIMED_OUT": "Tool execution ended because its time limit elapsed."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "TOOL_EXECUTION_STATUS_PENDING",
              "number": 0,
              "canonical": true,
              "description": "The tool call is waiting to begin execution."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_EXECUTING",
              "number": 1,
              "canonical": true,
              "description": "The tool call is currently executing."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_COMPLETED",
              "number": 2,
              "canonical": true,
              "description": "The tool call completed successfully. This is a terminal outcome."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_FAILED",
              "number": 3,
              "canonical": true,
              "description": "Tool execution ended unsuccessfully; inspect the tool error or end reason."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION",
              "number": 4,
              "canonical": true,
              "description": "The tool call is waiting for approval before it can execute."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_CANCELLED",
              "number": 5,
              "canonical": true,
              "description": "The tool call was cancelled before normal completion."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_TIMED_OUT",
              "number": 6,
              "canonical": true,
              "description": "Tool execution ended because its time limit elapsed."
            }
          ],
          "x-enum-description": "Execution state of a tool call, including approval waiting and terminal outcomes. The terminal outcomes are COMPLETED, FAILED, CANCELLED and TIMED\\_OUT; inspect ToolCall.end\\_reason for why a call ended rather than treating the reason as another status.\n\nUse a listed execution status. The end reason explains the outcome separately from the status.",
          "description": "Execution status recorded for the tool call.",
          "x-presence": "explicit"
        },
        "resultJson": {
          "type": "object",
          "additionalProperties": true,
          "description": "Tool execution result (object).",
          "x-presence": "message"
        },
        "executedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the tool execution was recorded.",
          "x-presence": "message"
        },
        "serverId": {
          "type": "string",
          "description": "Which server provides this tool (for MCP tools).",
          "x-presence": "implicit"
        },
        "isClientTool": {
          "type": "boolean",
          "description": "True if this is a client-side tool handled by client.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Tool description captured from the resolved tool definition when the call is emitted, preserving the definition used for historical calls even if the tool configuration later changes.",
          "x-presence": "implicit"
        },
        "parametersJsonSchema": {
          "type": "object",
          "additionalProperties": true,
          "description": "JSON Schema describing the tool’s input arguments.",
          "x-presence": "message"
        },
        "requiresApprovalAt": {
          "type": "string",
          "format": "date-time",
          "description": "Deadline for an approval decision, calculated from the effective approval timeout. This is not the time the call began waiting. An approval received after the deadline is rejected.",
          "x-presence": "message"
        },
        "approvedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when approval decision was recorded (if approved/rejected)",
          "x-presence": "message"
        },
        "approvedBy": {
          "type": "string",
          "description": "Identifier of the approver (user id, email, or actor key)",
          "x-presence": "implicit"
        },
        "executionDuration": {
          "type": "string",
          "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,9})?s$",
          "description": "End-to-end execution duration once terminal (includes tool server latency or client-side time)",
          "x-presence": "message"
        },
        "endReason": {
          "type": "string",
          "description": "Why this call ended, in one short phrase — \"approval rejected\", \"approval timeout\", or the underlying error. Set only once `status` is terminal, and empty on a clean COMPLETED.\n\nUse this reason to distinguish a rejection from a failure without parsing the tool result.",
          "x-presence": "implicit"
        },
        "clientToolDeadlineAt": {
          "type": "string",
          "format": "date-time",
          "description": "Deadline by which the client must submit a result for this call, stamped when the call is dispatched to a caller.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "ToolCall",
        "url": "/api/models/schema-1it6mqsqoo#request"
      }
    },
    "llm_v1_common_v1_AnnotationInput": {
      "type": "object",
      "description": "Tagged provider annotation attached to generated content, such as a citation or PDF reference.",
      "properties": {
        "kind": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ANNOTATION_KIND_URL_CITATION",
                "ANNOTATION_KIND_PDF"
              ],
              "x-enumDescriptions": {
                "ANNOTATION_KIND_URL_CITATION": "A citation to a source identified by its URL.",
                "ANNOTATION_KIND_PDF": "An annotation identifying source content in a PDF document."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "ANNOTATION_KIND_URL_CITATION",
              "number": 0,
              "canonical": true,
              "description": "A citation to a source identified by its URL."
            },
            {
              "name": "ANNOTATION_KIND_PDF",
              "number": 1,
              "canonical": true,
              "description": "An annotation identifying source content in a PDF document."
            }
          ],
          "x-enum-description": "Kind of source annotation associated with generated content.",
          "description": "Selected kind; determines which submessage is populated",
          "x-presence": "explicit"
        },
        "urlCitation": {
          "description": "Submessage fields (optional); populate the one matching kind",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_UrlCitationInput"
            }
          ]
        },
        "pdf": {
          "description": "PDF annotation identifying the parsed file and available parsing output.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PdfAnnotationInput"
            }
          ]
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Provider-specific extras.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "Annotation",
        "url": "/api/models/schema-1i0hjer0pd#request"
      }
    },
    "llm_v1_common_v1_UrlCitationInput": {
      "type": "object",
      "description": "Web source and character range cited in generated message content.",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL of the cited web page.",
          "x-presence": "implicit"
        },
        "title": {
          "type": "string",
          "description": "Title of the web page cited by this annotation.",
          "x-presence": "implicit"
        },
        "content": {
          "type": "string",
          "description": "Optional excerpt or snippet of the cited web page.",
          "x-presence": "implicit"
        },
        "startIndex": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Character index in message content.",
          "x-presence": "implicit"
        },
        "endIndex": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Character index in message content.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "UrlCitation",
        "url": "/api/models/schema-1hujls61ng#request"
      }
    },
    "llm_v1_common_v1_PdfAnnotationInput": {
      "type": "object",
      "description": "Provider annotation identifying a parsed PDF and reusable parsing output.",
      "properties": {
        "filename": {
          "type": "string",
          "description": "Optional identifying information about the original file",
          "x-presence": "implicit"
        },
        "engine": {
          "type": "string",
          "description": "PDF parsing engine used by provider (e.g., \"pdf-text\", \"mistral-ocr\", \"native\")",
          "x-presence": "implicit"
        },
        "token": {
          "type": "string",
          "description": "Opaque provider token or handle allowing reuse without re-parsing",
          "x-presence": "implicit"
        },
        "sourceUrl": {
          "type": "string",
          "description": "Optional: original source reference (public URL or data: URL)",
          "x-presence": "implicit"
        },
        "hash": {
          "type": "string",
          "description": "Provider-supplied hash identifying the parsed file.",
          "x-presence": "implicit"
        },
        "content": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ContentPartInput"
          },
          "description": "Optional structured content returned by provider annotations (text, image URLs, etc.) Note: This can be large; include only if you need to round-trip provider annotations.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "PdfAnnotation",
        "url": "/api/models/schema-1hsi58i6pb#request"
      }
    },
    "llm_v1_common_v1_UsageInput": {
      "type": "object",
      "description": "Usage accounting",
      "properties": {
        "promptTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Prompt-token usage reported by the model provider.",
          "x-presence": "implicit"
        },
        "completionTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Completion-token usage reported by the model provider.",
          "x-presence": "implicit"
        },
        "totalTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total token usage reported by the model provider.",
          "x-presence": "implicit"
        },
        "costEstimate": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Estimated cost in USD.",
          "x-presence": "implicit"
        },
        "completionTokensDetails": {
          "description": "Breakdown of completion tokens.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_CompletionTokensDetailsInput"
            }
          ]
        },
        "promptTokensDetails": {
          "description": "Breakdown of prompt tokens (cache).",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PromptTokensDetailsInput"
            }
          ]
        },
        "costDetails": {
          "description": "Breakdown of upstream provider cost (BYOK routes).",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_CostDetailsInput"
            }
          ]
        },
        "isByok": {
          "type": "boolean",
          "description": "Whether this generation used the customer's own model-provider key.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Usage",
        "url": "/api/models/schema-1j1vov2uoh#request"
      }
    },
    "llm_v1_common_v1_CompletionTokensDetailsInput": {
      "type": "object",
      "description": "Breakdown of completion-token usage. Categories are measured by different upstream tokenizers and need not sum to completion\\_tokens; reasoning\\_tokens can exceed completion\\_tokens. One category must not be derived by subtracting the others.",
      "properties": {
        "reasoningTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Tokens used for reasoning/thinking.",
          "x-presence": "implicit"
        },
        "imageTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Completion tokens emitted as image output.",
          "x-presence": "implicit"
        },
        "audioTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Completion tokens emitted as audio output.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "CompletionTokensDetails",
        "url": "/api/models/schema-1i6q4qpg72#request"
      }
    },
    "llm_v1_common_v1_PromptTokensDetailsInput": {
      "type": "object",
      "description": "Breakdown of prompt token usage by category (input-side cache accounting)\n\nSubset semantics: cached\\_tokens and cache\\_write\\_tokens are a breakdown *of* prompt\\_tokens, so cached\\_tokens + cache\\_write\\_tokens \\<= Usage.prompt\\_tokens. Ordinary (full-rate) prompt tokens = prompt\\_tokens - cached\\_tokens - cache\\_write\\_tokens. audio\\_tokens / video\\_tokens are modality breakdowns of prompt\\_tokens (also a subset).",
      "properties": {
        "cachedTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Prompt tokens served from cache (cache READ).",
          "x-presence": "implicit"
        },
        "cacheWriteTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Prompt tokens written to cache this call (cache WRITE).",
          "x-presence": "implicit"
        },
        "audioTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Prompt tokens from audio input (multimodal).",
          "x-presence": "implicit"
        },
        "videoTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Prompt tokens from video input (multimodal).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PromptTokensDetails",
        "url": "/api/models/schema-1ivj82m55o#request"
      }
    },
    "llm_v1_common_v1_CostDetailsInput": {
      "type": "object",
      "description": "Breakdown of model-provider cost. When the customer supplies the provider key, usage.cost is zero and upstream\\_inference\\_cost reports the provider spend, split into prompt and completion components.",
      "properties": {
        "upstreamInferenceCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Total upstream provider cost (USD) on BYOK routes.",
          "x-presence": "implicit"
        },
        "upstreamInferencePromptCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Upstream cost attributed to prompt tokens (USD).",
          "x-presence": "implicit"
        },
        "upstreamInferenceCompletionCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Upstream cost attributed to completion tokens (USD).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "CostDetails",
        "url": "/api/models/schema-1ia0h761lm#request"
      }
    },
    "llm_v1_common_v1_GenerationContextInput": {
      "type": "object",
      "description": "Snapshot of retrieval inputs, prompt provenance, and turn position that shaped a generated message.",
      "properties": {
        "memories": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MemoryReferenceInput"
          },
          "description": "Memory records captured in the generation context.",
          "x-presence": "collection"
        },
        "relations": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_RelationReferenceInput"
          },
          "description": "Graph relationships captured in the generation context.",
          "x-presence": "collection"
        },
        "memorySearch": {
          "description": "Memory-query parameters and counts recorded for this generation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_MemorySearchParamsInput"
            }
          ]
        },
        "turn": {
          "description": "Turn position and limit within the generation run.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_TurnInfoInput"
            }
          ]
        },
        "languagePreference": {
          "type": "string",
          "description": "Language preference associated with the generation context.",
          "x-presence": "implicit"
        },
        "resolvedSystemPrompt": {
          "type": "string",
          "description": "System prompt selected for this generation after prompt precedence is resolved. This field is retained in the schema but is not populated; use resolved\\_prompt\\_hash for recorded prompt identity.",
          "x-presence": "implicit"
        },
        "profileId": {
          "type": "string",
          "description": "Agent profile that produced this message (\"\" if none active).",
          "x-presence": "implicit"
        },
        "model": {
          "type": "string",
          "description": "Model actually used for this generation.",
          "x-presence": "implicit"
        },
        "promptSource": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "PROMPT_SOURCE_CLIENT_OVERRIDE",
                "PROMPT_SOURCE_PROFILE_TEMPLATE",
                "PROMPT_SOURCE_DEFAULT_CONFIG"
              ],
              "x-enumDescriptions": {
                "PROMPT_SOURCE_CLIENT_OVERRIDE": "The caller supplied the prompt through the send request's generation-configuration override.\n\nSendRequest.override\\_generation\\_config",
                "PROMPT_SOURCE_PROFILE_TEMPLATE": "The prompt was rendered from the active agent profile template.\n\nactive agent profile's rendered template",
                "PROMPT_SOURCE_DEFAULT_CONFIG": "The prompt came from the conversation or project default generation configuration.\n\nconversation/project default\\_generation\\_config"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "PROMPT_SOURCE_CLIENT_OVERRIDE",
              "number": 0,
              "canonical": true,
              "description": "The caller supplied the prompt through the send request's generation-configuration override.\n\nSendRequest.override\\_generation\\_config"
            },
            {
              "name": "PROMPT_SOURCE_PROFILE_TEMPLATE",
              "number": 1,
              "canonical": true,
              "description": "The prompt was rendered from the active agent profile template.\n\nactive agent profile's rendered template"
            },
            {
              "name": "PROMPT_SOURCE_DEFAULT_CONFIG",
              "number": 2,
              "canonical": true,
              "description": "The prompt came from the conversation or project default generation configuration.\n\nconversation/project default\\_generation\\_config"
            }
          ],
          "x-enum-description": "Source that supplied the effective system prompt for a generation turn. Distinguishes a client override, a profile template and the conversation default configuration for prompt attribution.",
          "description": "Which precedence tier supplied the prompt.",
          "x-presence": "explicit"
        },
        "baseConfig": {
          "description": "Generation configuration resolved at send time before per-call overrides and timeout adjustments, with system\\_prompt omitted. The active profile supplies the base when selected; otherwise the conversation default does. Use prompt\\_source and profile\\_id for prompt attribution. The base configuration can be absent when neither source supplies one or no snapshot was captured.\n\nFor a supplied per-call override, the populated top-level fields of override\\_config overlay base\\_config to form the effective configuration. override\\_config can be absent when no override was supplied.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ]
        },
        "overrideConfig": {
          "description": "Per-call generation configuration supplied before the override merge.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ]
        },
        "profileVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Immutable version of the active agent profile used to render this turn’s prompt. Absent on older turns and turns without a profile template.",
          "x-presence": "implicit"
        },
        "fragmentsVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Version of the prompt-fragment set used to render the profile prompt.",
          "x-presence": "implicit"
        },
        "promptVariables": {
          "type": "object",
          "additionalProperties": true,
          "description": "Values bound to the prompt template for this generation.",
          "x-presence": "message"
        },
        "profileRenderFailed": {
          "type": "boolean",
          "description": "Whether rendering the profile prompt failed for this generation.",
          "x-presence": "implicit"
        },
        "resolvedPromptHash": {
          "type": "string",
          "description": "SHA-256 hash, as 64 hexadecimal characters, of the resolved system prompt before the current-time instruction is appended. Identifies prompt content only, excluding model and sampling parameters. Absent on older turns without prompt capture.",
          "x-presence": "implicit"
        },
        "resolvedUserContext": {
          "type": "string",
          "description": "The literal user-context text supplied to the model for this turn, including the available name, locale and location conditions. It is a captured prompt input, not a reconstruction from the user’s current profile.\n\nThe value is computed once per turn and reused across its model calls. It can be empty when location context is unavailable, enrichment fails or the turn predates capture.",
          "x-presence": "implicit"
        },
        "resolvedMcpServers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerReferenceInput"
          },
          "description": "The MCP server list used for this turn after resolving conversation settings, the active profile, and any per-turn `override_mcp_servers`. It determines both tool discovery and the allow/block rules applied by `CallTool`.\n\nA per-turn override does not change the conversation's stored MCP settings. Compare this snapshot with `settings.mcp_servers` to inspect how the turn's tool set differed.\n\nEmpty on turns predating capture and on threads with no MCP servers.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "GenerationContext",
        "url": "/api/models/schema-1im79fphmq#request"
      }
    },
    "llm_v1_common_v1_MemoryReferenceInput": {
      "type": "object",
      "description": "A memory record retrieved and included in generation context.",
      "properties": {
        "memoryId": {
          "type": "string",
          "description": "Identifier of the retrieved memory record.",
          "x-presence": "implicit"
        },
        "score": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Relevance score reported by the memory provider for this match.",
          "x-presence": "implicit"
        },
        "memoryText": {
          "type": "string",
          "description": "Text of the retrieved memory record.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "MemoryReference",
        "url": "/api/models/schema-1ie9a4bgk5#request"
      }
    },
    "llm_v1_common_v1_RelationReferenceInput": {
      "type": "object",
      "description": "A graph relationship retrieved and included in generation context.",
      "properties": {
        "source": {
          "type": "string",
          "description": "Source entity of the memory graph relationship.",
          "x-presence": "implicit"
        },
        "relationship": {
          "type": "string",
          "description": "Relationship label connecting the source and destination entities.",
          "x-presence": "implicit"
        },
        "destination": {
          "type": "string",
          "description": "Destination entity of the memory graph relationship.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "RelationReference",
        "url": "/api/models/schema-1ijit8ceuv#request"
      }
    },
    "llm_v1_common_v1_MemorySearchParamsInput": {
      "type": "object",
      "description": "Parameters used to retrieve relevant memories during generation.",
      "properties": {
        "query": {
          "type": "string",
          "description": "Text submitted to memory retrieval for this generation.",
          "x-presence": "implicit"
        },
        "topK": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum memory matches requested during generation-context retrieval.",
          "x-presence": "implicit"
        },
        "threshold": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Minimum relevance threshold requested for the memory query.",
          "x-presence": "implicit"
        },
        "rerank": {
          "type": "boolean",
          "description": "Whether reranking was requested for the memory search.",
          "x-presence": "implicit"
        },
        "resultsReturned": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of memory records returned by the search.",
          "x-presence": "implicit"
        },
        "relationsReturned": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of graph relationships returned by the search.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "MemorySearchParams",
        "url": "/api/models/schema-1igd5iut01#request"
      }
    },
    "llm_v1_common_v1_TurnInfoInput": {
      "type": "object",
      "description": "Turn position within an agentic generation run",
      "properties": {
        "currentTurn": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Current turn position within the generation run.",
          "x-presence": "implicit"
        },
        "maxTurns": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum turns configured for the generation run.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TurnInfo",
        "url": "/api/models/schema-1ilcikuhu8#request"
      }
    },
    "llm_v1_common_v1_ClientContextInput": {
      "type": "object",
      "description": "Opaque caller-supplied attributes attached to a conversation message.\n\nValues are strings, including values such as `\"false\"`. The schema allows at most 32 pairs, keys of at most 64 characters, and values of at most 1,024 characters. Keep the entire map well below 8 KiB: Travila also applies an encoded-size limit that includes field overhead and drops context that exceeds it. Short page identifiers and a few relevant values are preferable to a page dump; an oversized map is not automatically shortened.",
      "properties": {
        "values": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "maxLength": 1024
          },
          "maxProperties": 32,
          "description": "Arbitrary client-supplied context for this message (e.g. page, referrer, device, in-app flow). Keys/values are opaque strings.",
          "x-presence": "collection",
          "x-protovalidate": {
            "map": {
              "maxPairs": "32",
              "keys": {
                "string": {
                  "maxLen": "64"
                }
              },
              "values": {
                "string": {
                  "maxLen": "1024"
                }
              }
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-reference-model": {
        "title": "ClientContext",
        "url": "/api/models/schema-1i2sndrl93#request"
      }
    },
    "llm_v1_common_v1_MessageFeedbackInput": {
      "type": "object",
      "description": "One user's feedback on an assistant-generated message.\n\nkind must select a listed feedback representation. Requiredness and allowed values are declared separately.",
      "properties": {
        "kind": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "FEEDBACK_KIND_THUMB",
                "FEEDBACK_KIND_SCALE"
              ],
              "x-enumDescriptions": {
                "FEEDBACK_KIND_THUMB": "Binary positive or negative feedback, represented by a thumbs-up or thumbs-down choice.\n\nbinary thumbs up / down",
                "FEEDBACK_KIND_SCALE": "Feedback expressed as an integer rating from 1 through 10.\n\n1-10 integer scale"
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "FEEDBACK_KIND_THUMB",
              "number": 0,
              "canonical": true,
              "description": "Binary positive or negative feedback, represented by a thumbs-up or thumbs-down choice.\n\nbinary thumbs up / down"
            },
            {
              "name": "FEEDBACK_KIND_SCALE",
              "number": 1,
              "canonical": true,
              "description": "Feedback expressed as an integer rating from 1 through 10.\n\n1-10 integer scale"
            }
          ],
          "x-enum-description": "Value scale used to interpret recorded feedback.",
          "description": "Rating representation used to interpret the feedback value.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "thumbUp": {
          "type": "boolean",
          "description": "Positive when true and negative when false; used for THUMB feedback.",
          "x-presence": "implicit"
        },
        "rating": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Numeric quality rating for SCALE feedback; the scale endpoints mean poor and excellent.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "10",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "reason": {
          "type": "string",
          "maxLength": 1000,
          "description": "Optional explanation for the rating.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "1000"
            }
          },
          "x-validation-scope": "request"
        },
        "ratedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when feedback was submitted (server-set)",
          "x-presence": "message"
        },
        "ratedBy": {
          "type": "string",
          "description": "Identifier of the user who submitted this feedback. Set by the server from the authenticated user identity; never client-supplied. Each user has one feedback entry per message.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "MessageFeedback",
        "url": "/api/models/schema-1iroqctqt1#request"
      },
      "x-request-required": [
        "kind"
      ],
      "required": [
        "kind"
      ]
    },
    "llm_v1_common_v1_ExperimentContext": {
      "type": "object",
      "description": "Dataset-run attribution attached when a scripted evaluation turn is sent. Supported on SendMessageRequest and SendMessageSyncRequest; ordinary conversation traffic leaves it unset.\n\nThe attribution must accompany the turn so its observations can be associated with the dataset run; a separate post-run link does not supply this attribution. The dataset is required when experiment context is supplied.\n\nThis attribution is separate from client\\_context, which is included in model prompt context. Do not place evaluation attribution in prompt context.\n\ndataset\\_item\\_id is optional: a run can be scored from its traces without assigning each turn to a dataset item. profile\\_revision\\_hash supplies a profile revision fingerprint for comparison and attribution.",
      "properties": {
        "datasetId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the dataset to which this run belongs. Required whenever experiment context is supplied.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "runName": {
          "type": "string",
          "minLength": 1,
          "description": "Names the run. Repeating a run\\_name for the same dataset appends to that run rather than starting a new one, because the derived experiment id is deterministic — the same property that lets a retried turn land in the run it belongs to.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "datasetItemId": {
          "type": "string",
          "description": "Which dataset item this turn exercises. Optional: a run can be scored on its traces alone, and a harness that does not model items per-turn can leave it empty.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Free-text description displayed with the dataset run.",
          "x-presence": "implicit"
        },
        "metadataJson": {
          "type": "string",
          "description": "Additional run metadata serialized as a JSON object string and carried through unchanged.",
          "x-presence": "implicit"
        },
        "profileRevisionHash": {
          "type": "string",
          "description": "Profile revision fingerprint attached to the dataset run for comparison and attribution.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ExperimentContext",
        "url": "/api/models/schema-1icbr3lltu#request"
      },
      "x-request-required": [
        "datasetId",
        "runName"
      ],
      "required": [
        "datasetId",
        "runName"
      ]
    },
    "llm_v1_services_gateway_v1_SendMessageResponse": {
      "type": "object",
      "description": "Result of starting an asynchronous generation from a user message.",
      "properties": {
        "runId": {
          "type": "string",
          "description": "Identifier of the generation run associated with the operation.",
          "x-presence": "implicit"
        },
        "interruptedPriorRun": {
          "type": "boolean",
          "description": "Whether submitting this turn interrupted a preceding generation run.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_AppendMessageRequest": {
      "type": "object",
      "description": "Input for adding a message to conversation history without starting generation.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "message": {
          "description": "Required, for the same reason as SendMessageRequest.user\\_message and via the same hole: this field's name is \"message\", the sends call theirs \"user\\_message\", and the lenient codec discards whichever one the caller did not pick. Appending nothing costs no tokens, but applyAppendMessage returns nil for a nil message and the endpoint answers 200 regardless — so a CONTEXT UPDATE feed writes nothing and the TRIGGER that later reads the thread is missing the context it was told had landed.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_MessageInput"
            }
          ],
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "conversationKey",
        "message"
      ],
      "required": [
        "conversationKey",
        "message"
      ]
    },
    "llm_v1_services_gateway_v1_AppendMessageResponse": {
      "type": "object",
      "description": "Result of adding a message to conversation history without starting generation. This message declares no response fields.",
      "properties": {}
    },
    "llm_v1_services_gateway_v1_RateMessageRequest": {
      "type": "object",
      "description": "Rate an assistant message in a thread. The rater is derived server-side from the verified request headers — never supplied by the client body. For THUMB feedback, thumb\\_up supplies the choice and rating must be zero or omitted. For SCALE feedback, rating must be from 1 through 10.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "messageSequence": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Per-conversation sequence number of the assistant-generated message to rate.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "kind": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "FEEDBACK_KIND_THUMB",
                "FEEDBACK_KIND_SCALE"
              ],
              "x-enumDescriptions": {
                "FEEDBACK_KIND_THUMB": "Binary positive or negative feedback, represented by a thumbs-up or thumbs-down choice.\n\nbinary thumbs up / down",
                "FEEDBACK_KIND_SCALE": "Feedback expressed as an integer rating from 1 through 10.\n\n1-10 integer scale"
              }
            },
            {
              "type": "integer",
              "format": "int32",
              "enum": [
                0,
                1
              ]
            }
          ],
          "x-enum-values": [
            {
              "name": "FEEDBACK_KIND_THUMB",
              "number": 0,
              "canonical": true,
              "description": "Binary positive or negative feedback, represented by a thumbs-up or thumbs-down choice.\n\nbinary thumbs up / down"
            },
            {
              "name": "FEEDBACK_KIND_SCALE",
              "number": 1,
              "canonical": true,
              "description": "Feedback expressed as an integer rating from 1 through 10.\n\n1-10 integer scale"
            }
          ],
          "x-enum-description": "Value scale used to interpret recorded feedback.",
          "description": "Rating representation used to interpret the thumb or scale value.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "thumbUp": {
          "type": "boolean",
          "description": "Positive when true and negative when false; used for THUMB feedback.",
          "x-presence": "implicit"
        },
        "rating": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Numeric quality rating for SCALE feedback; the scale endpoints mean poor and excellent.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "10",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "reason": {
          "type": "string",
          "maxLength": 1000,
          "description": "Optional explanation for the rating.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "1000"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "conversationKey",
        "messageSequence",
        "kind"
      ],
      "required": [
        "conversationKey",
        "messageSequence",
        "kind"
      ]
    },
    "llm_v1_services_gateway_v1_RateMessageResponse": {
      "type": "object",
      "description": "Result of recording the caller’s rating on a conversation message.",
      "properties": {
        "ratedMessage": {
          "description": "The rated message with the full (all-rater) feedback list applied",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Message"
            }
          ]
        },
        "isUpdate": {
          "type": "boolean",
          "description": "True when this replaced the caller's previous rating on this message",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_common_v1_Message": {
      "type": "object",
      "description": "Chat message\n\nAt least one of content or tool\\_calls must contain an entry; both lists may be nonempty. role must select a listed message role. Requiredness and allowed values are declared separately.",
      "properties": {
        "role": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ROLE_SYSTEM",
                "ROLE_USER",
                "ROLE_ASSISTANT",
                "ROLE_TOOL"
              ],
              "x-enumDescriptions": {
                "ROLE_SYSTEM": "Instructions or context provided as a system message.",
                "ROLE_USER": "Input supplied by the user or customer application.",
                "ROLE_ASSISTANT": "Content produced by the assistant, including its tool-call requests.",
                "ROLE_TOOL": "A tool result supplied back to the assistant."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "ROLE_SYSTEM",
              "number": 0,
              "canonical": true,
              "description": "Instructions or context provided as a system message."
            },
            {
              "name": "ROLE_USER",
              "number": 1,
              "canonical": true,
              "description": "Input supplied by the user or customer application."
            },
            {
              "name": "ROLE_ASSISTANT",
              "number": 2,
              "canonical": true,
              "description": "Content produced by the assistant, including its tool-call requests."
            },
            {
              "name": "ROLE_TOOL",
              "number": 3,
              "canonical": true,
              "description": "A tool result supplied back to the assistant."
            }
          ],
          "x-enum-description": "Participant role attached to a conversation message and forwarded in model context.",
          "description": "Role of the participant that produced the chat message.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "content": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ContentPart"
          },
          "description": "Content parts composing the chat message.",
          "x-presence": "collection"
        },
        "toolCalls": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolCall"
          },
          "description": "Assistant-to-tool invocations.",
          "x-presence": "collection"
        },
        "name": {
          "type": "string",
          "description": "Name identifying the sender of the chat message.\n\noptional sender name",
          "x-presence": "implicit"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp associated with the conversation message or event.",
          "x-presence": "message"
        },
        "messageId": {
          "type": "string",
          "description": "Unique message identifier.",
          "x-presence": "implicit"
        },
        "annotations": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_Annotation"
          },
          "description": "Structured annotations (e.g., standardized web search URL citations, PDF reuse tokens)",
          "x-presence": "collection"
        },
        "sequence": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Monotonic, per-conversation sequence number for stable ordering (1-based)",
          "x-presence": "implicit"
        },
        "generatedBy": {
          "type": "string",
          "description": "Workflow run id or generator key that produced this message (e.g., workflow run key)",
          "x-presence": "implicit"
        },
        "usage": {
          "description": "Token usage for this generation (populated for assistant messages)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Usage"
            }
          ]
        },
        "model": {
          "type": "string",
          "description": "Model that generated this message (e.g., \"anthropic/claude-sonnet-4\")",
          "x-presence": "implicit"
        },
        "generationContext": {
          "description": "Dynamic context that shaped this generation (memories, search params, turn info)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationContext"
            }
          ]
        },
        "clientContext": {
          "description": "Arbitrary client-supplied context attached by the client for this message",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ClientContext"
            }
          ]
        },
        "feedback": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MessageFeedback"
          },
          "description": "Feedback on an assistant message, with one entry per rater identified by rated\\_by. A later rating by the same rater replaces their earlier entry.",
          "x-presence": "collection"
        },
        "sourceUserMessageId": {
          "type": "string",
          "description": "Identifier of the user message that opened this conversation turn. Generated messages in the same turn share this value; a user message carries its own message\\_id. Empty on historical messages that predate turn attribution.\n\nUse this field for turn attribution rather than inferring it from message adjacency or a client-supplied message\\_id. The generated\\_by identifier groups messages by generation run but does not identify the user message that opened the turn.",
          "x-presence": "implicit"
        },
        "finishReason": {
          "type": "string",
          "description": "Why the model stopped, verbatim from the provider: \"stop\", \"tool\\_calls\", \"length\", \"error\". Empty for historical messages.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Message",
        "url": "/api/models/schema-1j3dcf7kvu#response"
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.message_content",
            "message": "content or tool_calls required",
            "expression": "[size(this.content) > 0, size(this.tool_calls) > 0].filter(f, f).size() >= 1"
          }
        ]
      },
      "x-validation-scope": "request",
      "x-request-required": [
        "role"
      ]
    },
    "llm_v1_common_v1_ContentPart": {
      "type": "object",
      "description": "Content parts composing a message, using a flattened structure for JSON compatibility. The `type` identifies how the content is represented; only defined content types are accepted.",
      "properties": {
        "type": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "CONTENT_PART_TYPE_TEXT",
                "CONTENT_PART_TYPE_IMAGE_URL",
                "CONTENT_PART_TYPE_IMAGE_BASE64",
                "CONTENT_PART_TYPE_FILE_ID",
                "CONTENT_PART_TYPE_FILE_PATH",
                "CONTENT_PART_TYPE_FILE_URL",
                "CONTENT_PART_TYPE_FILE_DATA_URL",
                "CONTENT_PART_TYPE_AUDIO_BASE64",
                "CONTENT_PART_TYPE_REASONING"
              ],
              "x-enumDescriptions": {
                "CONTENT_PART_TYPE_TEXT": "Plain text carried by the content part.\n\nPlain text content",
                "CONTENT_PART_TYPE_IMAGE_URL": "An image supplied through a remote URL.\n\nRemote image URL",
                "CONTENT_PART_TYPE_IMAGE_BASE64": "An image supplied as base64-encoded bytes.\n\nBase64-encoded image data",
                "CONTENT_PART_TYPE_FILE_ID": "A provider file identifier or internal storage identifier resolved before generation.\n\nFile ID — a provider file ID (e.g., OpenAI) OR an internal storage file ID; resolved to a signed FILE\\_URL just-in-time before the model-provider request",
                "CONTENT_PART_TYPE_FILE_PATH": "A reference to a local file path.\n\nLocal file path reference",
                "CONTENT_PART_TYPE_FILE_URL": "A file supplied through a public or signed URL.\n\nPublic or signed file URL (e.g., PDF URL or data: URL)",
                "CONTENT_PART_TYPE_FILE_DATA_URL": "A file embedded in a data URL, including its media type and encoded data.\n\ndata\\:application/pdf;base64,... or similar",
                "CONTENT_PART_TYPE_AUDIO_BASE64": "Base64-encoded audio; the part metadata identifies its audio format.\n\nBase64-encoded audio (metadata.format required, e.g., wav/mp3)",
                "CONTENT_PART_TYPE_REASONING": "A reasoning segment returned by a model provider, when available.\n\nReasoning/thinking content from chain-of-thought models"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "CONTENT_PART_TYPE_TEXT",
              "number": 0,
              "canonical": true,
              "description": "Plain text carried by the content part.\n\nPlain text content"
            },
            {
              "name": "CONTENT_PART_TYPE_IMAGE_URL",
              "number": 1,
              "canonical": true,
              "description": "An image supplied through a remote URL.\n\nRemote image URL"
            },
            {
              "name": "CONTENT_PART_TYPE_IMAGE_BASE64",
              "number": 2,
              "canonical": true,
              "description": "An image supplied as base64-encoded bytes.\n\nBase64-encoded image data"
            },
            {
              "name": "CONTENT_PART_TYPE_FILE_ID",
              "number": 3,
              "canonical": true,
              "description": "A provider file identifier or internal storage identifier resolved before generation.\n\nFile ID — a provider file ID (e.g., OpenAI) OR an internal storage file ID; resolved to a signed FILE\\_URL just-in-time before the model-provider request"
            },
            {
              "name": "CONTENT_PART_TYPE_FILE_PATH",
              "number": 4,
              "canonical": true,
              "description": "A reference to a local file path.\n\nLocal file path reference"
            },
            {
              "name": "CONTENT_PART_TYPE_FILE_URL",
              "number": 5,
              "canonical": true,
              "description": "A file supplied through a public or signed URL.\n\nPublic or signed file URL (e.g., PDF URL or data: URL)"
            },
            {
              "name": "CONTENT_PART_TYPE_FILE_DATA_URL",
              "number": 6,
              "canonical": true,
              "description": "A file embedded in a data URL, including its media type and encoded data.\n\ndata\\:application/pdf;base64,... or similar"
            },
            {
              "name": "CONTENT_PART_TYPE_AUDIO_BASE64",
              "number": 7,
              "canonical": true,
              "description": "Base64-encoded audio; the part metadata identifies its audio format.\n\nBase64-encoded audio (metadata.format required, e.g., wav/mp3)"
            },
            {
              "name": "CONTENT_PART_TYPE_REASONING",
              "number": 8,
              "canonical": true,
              "description": "A reasoning segment returned by a model provider, when available.\n\nReasoning/thinking content from chain-of-thought models"
            }
          ],
          "x-enum-description": "Discriminator identifying which content representation a message part carries.",
          "description": "Kind of content carried by this message part.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "content": {
          "type": "string",
          "description": "Text content, image URL, file ID, or base64-encoded data.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional type-specific metadata (dimensions, mime\\_type, etc.).",
          "x-presence": "collection"
        },
        "cachePreferred": {
          "type": "boolean",
          "description": "Hint that this part is eligible for provider prompt caching.",
          "x-presence": "implicit"
        },
        "structuredMessage": {
          "description": "Populated on TEXT parts for structured output responses.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_StructuredMessage"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ContentPart",
        "url": "/api/models/schema-1hqi9r2bhh#response"
      }
    },
    "llm_v1_common_v1_StructuredMessage": {
      "type": "object",
      "description": "A structured message whose JSON payload has been validated against a declared schema. Consumers can trust that json\\_payload conforms to the schema identified by schema\\_name.\n\nInspect the run outcome before treating any message as complete. Current structured metadata is attached to a text content part through [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage); ordinary text is still present. [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage) can be absent. Use an object at the schema root and validate the exact final response your application consumes; server validation covers only the first model choice. For integers that your JSON client cannot represent exactly, define string-valued fields in your schema instead of converting them through floating point.",
      "properties": {
        "jsonPayload": {
          "type": "object",
          "additionalProperties": true,
          "description": "The validated JSON payload as a Struct (preserves types)",
          "x-presence": "message"
        },
        "schemaName": {
          "type": "string",
          "description": "Schema identifier (from ResponseFormat.schema\\_name)",
          "x-presence": "implicit"
        },
        "healed": {
          "type": "boolean",
          "description": "Whether response healing is reported for this structured message. Currently returned as false.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "StructuredMessage",
        "url": "/api/models/schema-1ho1lk4ndj#response"
      }
    },
    "llm_v1_common_v1_ToolCall": {
      "type": "object",
      "description": "A single structured tool call emitted by the model\n\n[`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat) is the client answer window. Expiry ends that wait and rejects late results; the timeout policy determines the outcome.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Provider-supplied call id.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Name of the tool or function being invoked.",
          "x-presence": "implicit"
        },
        "argumentsJson": {
          "type": "object",
          "additionalProperties": true,
          "description": "JSON object payload.",
          "x-presence": "message"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "TOOL_EXECUTION_STATUS_PENDING",
                "TOOL_EXECUTION_STATUS_EXECUTING",
                "TOOL_EXECUTION_STATUS_COMPLETED",
                "TOOL_EXECUTION_STATUS_FAILED",
                "TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION",
                "TOOL_EXECUTION_STATUS_CANCELLED",
                "TOOL_EXECUTION_STATUS_TIMED_OUT"
              ],
              "x-enumDescriptions": {
                "TOOL_EXECUTION_STATUS_PENDING": "The tool call is waiting to begin execution.",
                "TOOL_EXECUTION_STATUS_EXECUTING": "The tool call is currently executing.",
                "TOOL_EXECUTION_STATUS_COMPLETED": "The tool call completed successfully. This is a terminal outcome.",
                "TOOL_EXECUTION_STATUS_FAILED": "Tool execution ended unsuccessfully; inspect the tool error or end reason.",
                "TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION": "The tool call is waiting for approval before it can execute.",
                "TOOL_EXECUTION_STATUS_CANCELLED": "The tool call was cancelled before normal completion.",
                "TOOL_EXECUTION_STATUS_TIMED_OUT": "Tool execution ended because its time limit elapsed."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "TOOL_EXECUTION_STATUS_PENDING",
              "number": 0,
              "canonical": true,
              "description": "The tool call is waiting to begin execution."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_EXECUTING",
              "number": 1,
              "canonical": true,
              "description": "The tool call is currently executing."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_COMPLETED",
              "number": 2,
              "canonical": true,
              "description": "The tool call completed successfully. This is a terminal outcome."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_FAILED",
              "number": 3,
              "canonical": true,
              "description": "Tool execution ended unsuccessfully; inspect the tool error or end reason."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION",
              "number": 4,
              "canonical": true,
              "description": "The tool call is waiting for approval before it can execute."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_CANCELLED",
              "number": 5,
              "canonical": true,
              "description": "The tool call was cancelled before normal completion."
            },
            {
              "name": "TOOL_EXECUTION_STATUS_TIMED_OUT",
              "number": 6,
              "canonical": true,
              "description": "Tool execution ended because its time limit elapsed."
            }
          ],
          "x-enum-description": "Execution state of a tool call, including approval waiting and terminal outcomes. The terminal outcomes are COMPLETED, FAILED, CANCELLED and TIMED\\_OUT; inspect ToolCall.end\\_reason for why a call ended rather than treating the reason as another status.\n\nUse a listed execution status. The end reason explains the outcome separately from the status.",
          "description": "Execution status recorded for the tool call.",
          "x-presence": "explicit"
        },
        "resultJson": {
          "type": "object",
          "additionalProperties": true,
          "description": "Tool execution result (object).",
          "x-presence": "message"
        },
        "executedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the tool execution was recorded.",
          "x-presence": "message"
        },
        "serverId": {
          "type": "string",
          "description": "Which server provides this tool (for MCP tools).",
          "x-presence": "implicit"
        },
        "isClientTool": {
          "type": "boolean",
          "description": "True if this is a client-side tool handled by client.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Tool description captured from the resolved tool definition when the call is emitted, preserving the definition used for historical calls even if the tool configuration later changes.",
          "x-presence": "implicit"
        },
        "parametersJsonSchema": {
          "type": "object",
          "additionalProperties": true,
          "description": "JSON Schema describing the tool’s input arguments.",
          "x-presence": "message"
        },
        "requiresApprovalAt": {
          "type": "string",
          "format": "date-time",
          "description": "Deadline for an approval decision, calculated from the effective approval timeout. This is not the time the call began waiting. An approval received after the deadline is rejected.",
          "x-presence": "message"
        },
        "approvedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when approval decision was recorded (if approved/rejected)",
          "x-presence": "message"
        },
        "approvedBy": {
          "type": "string",
          "description": "Identifier of the approver (user id, email, or actor key)",
          "x-presence": "implicit"
        },
        "executionDuration": {
          "type": "string",
          "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,9})?s$",
          "description": "End-to-end execution duration once terminal (includes tool server latency or client-side time)",
          "x-presence": "message"
        },
        "endReason": {
          "type": "string",
          "description": "Why this call ended, in one short phrase — \"approval rejected\", \"approval timeout\", or the underlying error. Set only once `status` is terminal, and empty on a clean COMPLETED.\n\nUse this reason to distinguish a rejection from a failure without parsing the tool result.",
          "x-presence": "implicit"
        },
        "clientToolDeadlineAt": {
          "type": "string",
          "format": "date-time",
          "description": "Deadline by which the client must submit a result for this call, stamped when the call is dispatched to a caller.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "ToolCall",
        "url": "/api/models/schema-1it6mqsqoo#response"
      }
    },
    "llm_v1_common_v1_Annotation": {
      "type": "object",
      "description": "Tagged provider annotation attached to generated content, such as a citation or PDF reference.",
      "properties": {
        "kind": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ANNOTATION_KIND_URL_CITATION",
                "ANNOTATION_KIND_PDF"
              ],
              "x-enumDescriptions": {
                "ANNOTATION_KIND_URL_CITATION": "A citation to a source identified by its URL.",
                "ANNOTATION_KIND_PDF": "An annotation identifying source content in a PDF document."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "ANNOTATION_KIND_URL_CITATION",
              "number": 0,
              "canonical": true,
              "description": "A citation to a source identified by its URL."
            },
            {
              "name": "ANNOTATION_KIND_PDF",
              "number": 1,
              "canonical": true,
              "description": "An annotation identifying source content in a PDF document."
            }
          ],
          "x-enum-description": "Kind of source annotation associated with generated content.",
          "description": "Selected kind; determines which submessage is populated",
          "x-presence": "explicit"
        },
        "urlCitation": {
          "description": "Submessage fields (optional); populate the one matching kind",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_UrlCitation"
            }
          ]
        },
        "pdf": {
          "description": "PDF annotation identifying the parsed file and available parsing output.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PdfAnnotation"
            }
          ]
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Provider-specific extras.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "Annotation",
        "url": "/api/models/schema-1i0hjer0pd#response"
      }
    },
    "llm_v1_common_v1_UrlCitation": {
      "type": "object",
      "description": "Web source and character range cited in generated message content.",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL of the cited web page.",
          "x-presence": "implicit"
        },
        "title": {
          "type": "string",
          "description": "Title of the web page cited by this annotation.",
          "x-presence": "implicit"
        },
        "content": {
          "type": "string",
          "description": "Optional excerpt or snippet of the cited web page.",
          "x-presence": "implicit"
        },
        "startIndex": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Character index in message content.",
          "x-presence": "implicit"
        },
        "endIndex": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Character index in message content.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "UrlCitation",
        "url": "/api/models/schema-1hujls61ng#response"
      }
    },
    "llm_v1_common_v1_PdfAnnotation": {
      "type": "object",
      "description": "Provider annotation identifying a parsed PDF and reusable parsing output.",
      "properties": {
        "filename": {
          "type": "string",
          "description": "Optional identifying information about the original file",
          "x-presence": "implicit"
        },
        "engine": {
          "type": "string",
          "description": "PDF parsing engine used by provider (e.g., \"pdf-text\", \"mistral-ocr\", \"native\")",
          "x-presence": "implicit"
        },
        "token": {
          "type": "string",
          "description": "Opaque provider token or handle allowing reuse without re-parsing",
          "x-presence": "implicit"
        },
        "sourceUrl": {
          "type": "string",
          "description": "Optional: original source reference (public URL or data: URL)",
          "x-presence": "implicit"
        },
        "hash": {
          "type": "string",
          "description": "Provider-supplied hash identifying the parsed file.",
          "x-presence": "implicit"
        },
        "content": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ContentPart"
          },
          "description": "Optional structured content returned by provider annotations (text, image URLs, etc.) Note: This can be large; include only if you need to round-trip provider annotations.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "PdfAnnotation",
        "url": "/api/models/schema-1hsi58i6pb#response"
      }
    },
    "llm_v1_common_v1_Usage": {
      "type": "object",
      "description": "Usage accounting",
      "properties": {
        "promptTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Prompt-token usage reported by the model provider.",
          "x-presence": "implicit"
        },
        "completionTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Completion-token usage reported by the model provider.",
          "x-presence": "implicit"
        },
        "totalTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Total token usage reported by the model provider.",
          "x-presence": "implicit"
        },
        "costEstimate": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Estimated cost in USD.",
          "x-presence": "implicit"
        },
        "completionTokensDetails": {
          "description": "Breakdown of completion tokens.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_CompletionTokensDetails"
            }
          ]
        },
        "promptTokensDetails": {
          "description": "Breakdown of prompt tokens (cache).",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PromptTokensDetails"
            }
          ]
        },
        "costDetails": {
          "description": "Breakdown of upstream provider cost (BYOK routes).",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_CostDetails"
            }
          ]
        },
        "isByok": {
          "type": "boolean",
          "description": "Whether this generation used the customer's own model-provider key.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Usage",
        "url": "/api/models/schema-1j1vov2uoh#response"
      }
    },
    "llm_v1_common_v1_CompletionTokensDetails": {
      "type": "object",
      "description": "Breakdown of completion-token usage. Categories are measured by different upstream tokenizers and need not sum to completion\\_tokens; reasoning\\_tokens can exceed completion\\_tokens. One category must not be derived by subtracting the others.",
      "properties": {
        "reasoningTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Tokens used for reasoning/thinking.",
          "x-presence": "implicit"
        },
        "imageTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Completion tokens emitted as image output.",
          "x-presence": "implicit"
        },
        "audioTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Completion tokens emitted as audio output.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "CompletionTokensDetails",
        "url": "/api/models/schema-1i6q4qpg72#response"
      }
    },
    "llm_v1_common_v1_PromptTokensDetails": {
      "type": "object",
      "description": "Breakdown of prompt token usage by category (input-side cache accounting)\n\nSubset semantics: cached\\_tokens and cache\\_write\\_tokens are a breakdown *of* prompt\\_tokens, so cached\\_tokens + cache\\_write\\_tokens \\<= Usage.prompt\\_tokens. Ordinary (full-rate) prompt tokens = prompt\\_tokens - cached\\_tokens - cache\\_write\\_tokens. audio\\_tokens / video\\_tokens are modality breakdowns of prompt\\_tokens (also a subset).",
      "properties": {
        "cachedTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Prompt tokens served from cache (cache READ).",
          "x-presence": "implicit"
        },
        "cacheWriteTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Prompt tokens written to cache this call (cache WRITE).",
          "x-presence": "implicit"
        },
        "audioTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Prompt tokens from audio input (multimodal).",
          "x-presence": "implicit"
        },
        "videoTokens": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Prompt tokens from video input (multimodal).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PromptTokensDetails",
        "url": "/api/models/schema-1ivj82m55o#response"
      }
    },
    "llm_v1_common_v1_CostDetails": {
      "type": "object",
      "description": "Breakdown of model-provider cost. When the customer supplies the provider key, usage.cost is zero and upstream\\_inference\\_cost reports the provider spend, split into prompt and completion components.",
      "properties": {
        "upstreamInferenceCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Total upstream provider cost (USD) on BYOK routes.",
          "x-presence": "implicit"
        },
        "upstreamInferencePromptCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Upstream cost attributed to prompt tokens (USD).",
          "x-presence": "implicit"
        },
        "upstreamInferenceCompletionCost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Upstream cost attributed to completion tokens (USD).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "CostDetails",
        "url": "/api/models/schema-1ia0h761lm#response"
      }
    },
    "llm_v1_common_v1_GenerationContext": {
      "type": "object",
      "description": "Snapshot of retrieval inputs, prompt provenance, and turn position that shaped a generated message.",
      "properties": {
        "memories": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MemoryReference"
          },
          "description": "Memory records captured in the generation context.",
          "x-presence": "collection"
        },
        "relations": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_RelationReference"
          },
          "description": "Graph relationships captured in the generation context.",
          "x-presence": "collection"
        },
        "memorySearch": {
          "description": "Memory-query parameters and counts recorded for this generation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_MemorySearchParams"
            }
          ]
        },
        "turn": {
          "description": "Turn position and limit within the generation run.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_TurnInfo"
            }
          ]
        },
        "languagePreference": {
          "type": "string",
          "description": "Language preference associated with the generation context.",
          "x-presence": "implicit"
        },
        "resolvedSystemPrompt": {
          "type": "string",
          "description": "System prompt selected for this generation after prompt precedence is resolved. This field is retained in the schema but is not populated; use resolved\\_prompt\\_hash for recorded prompt identity.",
          "x-presence": "implicit"
        },
        "profileId": {
          "type": "string",
          "description": "Agent profile that produced this message (\"\" if none active).",
          "x-presence": "implicit"
        },
        "model": {
          "type": "string",
          "description": "Model actually used for this generation.",
          "x-presence": "implicit"
        },
        "promptSource": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "PROMPT_SOURCE_CLIENT_OVERRIDE",
                "PROMPT_SOURCE_PROFILE_TEMPLATE",
                "PROMPT_SOURCE_DEFAULT_CONFIG"
              ],
              "x-enumDescriptions": {
                "PROMPT_SOURCE_CLIENT_OVERRIDE": "The caller supplied the prompt through the send request's generation-configuration override.\n\nSendRequest.override\\_generation\\_config",
                "PROMPT_SOURCE_PROFILE_TEMPLATE": "The prompt was rendered from the active agent profile template.\n\nactive agent profile's rendered template",
                "PROMPT_SOURCE_DEFAULT_CONFIG": "The prompt came from the conversation or project default generation configuration.\n\nconversation/project default\\_generation\\_config"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "PROMPT_SOURCE_CLIENT_OVERRIDE",
              "number": 0,
              "canonical": true,
              "description": "The caller supplied the prompt through the send request's generation-configuration override.\n\nSendRequest.override\\_generation\\_config"
            },
            {
              "name": "PROMPT_SOURCE_PROFILE_TEMPLATE",
              "number": 1,
              "canonical": true,
              "description": "The prompt was rendered from the active agent profile template.\n\nactive agent profile's rendered template"
            },
            {
              "name": "PROMPT_SOURCE_DEFAULT_CONFIG",
              "number": 2,
              "canonical": true,
              "description": "The prompt came from the conversation or project default generation configuration.\n\nconversation/project default\\_generation\\_config"
            }
          ],
          "x-enum-description": "Source that supplied the effective system prompt for a generation turn. Distinguishes a client override, a profile template and the conversation default configuration for prompt attribution.",
          "description": "Which precedence tier supplied the prompt.",
          "x-presence": "explicit"
        },
        "baseConfig": {
          "description": "Generation configuration resolved at send time before per-call overrides and timeout adjustments, with system\\_prompt omitted. The active profile supplies the base when selected; otherwise the conversation default does. Use prompt\\_source and profile\\_id for prompt attribution. The base configuration can be absent when neither source supplies one or no snapshot was captured.\n\nFor a supplied per-call override, the populated top-level fields of override\\_config overlay base\\_config to form the effective configuration. override\\_config can be absent when no override was supplied.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig"
            }
          ]
        },
        "overrideConfig": {
          "description": "Per-call generation configuration supplied before the override merge.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig"
            }
          ]
        },
        "profileVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Immutable version of the active agent profile used to render this turn’s prompt. Absent on older turns and turns without a profile template.",
          "x-presence": "implicit"
        },
        "fragmentsVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Version of the prompt-fragment set used to render the profile prompt.",
          "x-presence": "implicit"
        },
        "promptVariables": {
          "type": "object",
          "additionalProperties": true,
          "description": "Values bound to the prompt template for this generation.",
          "x-presence": "message"
        },
        "profileRenderFailed": {
          "type": "boolean",
          "description": "Whether rendering the profile prompt failed for this generation.",
          "x-presence": "implicit"
        },
        "resolvedPromptHash": {
          "type": "string",
          "description": "SHA-256 hash, as 64 hexadecimal characters, of the resolved system prompt before the current-time instruction is appended. Identifies prompt content only, excluding model and sampling parameters. Absent on older turns without prompt capture.",
          "x-presence": "implicit"
        },
        "resolvedUserContext": {
          "type": "string",
          "description": "The literal user-context text supplied to the model for this turn, including the available name, locale and location conditions. It is a captured prompt input, not a reconstruction from the user’s current profile.\n\nThe value is computed once per turn and reused across its model calls. It can be empty when location context is unavailable, enrichment fails or the turn predates capture.",
          "x-presence": "implicit"
        },
        "resolvedMcpServers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerReference"
          },
          "description": "The MCP server list used for this turn after resolving conversation settings, the active profile, and any per-turn `override_mcp_servers`. It determines both tool discovery and the allow/block rules applied by `CallTool`.\n\nA per-turn override does not change the conversation's stored MCP settings. Compare this snapshot with `settings.mcp_servers` to inspect how the turn's tool set differed.\n\nEmpty on turns predating capture and on threads with no MCP servers.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "GenerationContext",
        "url": "/api/models/schema-1im79fphmq#response"
      }
    },
    "llm_v1_common_v1_MemoryReference": {
      "type": "object",
      "description": "A memory record retrieved and included in generation context.",
      "properties": {
        "memoryId": {
          "type": "string",
          "description": "Identifier of the retrieved memory record.",
          "x-presence": "implicit"
        },
        "score": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Relevance score reported by the memory provider for this match.",
          "x-presence": "implicit"
        },
        "memoryText": {
          "type": "string",
          "description": "Text of the retrieved memory record.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "MemoryReference",
        "url": "/api/models/schema-1ie9a4bgk5#response"
      }
    },
    "llm_v1_common_v1_RelationReference": {
      "type": "object",
      "description": "A graph relationship retrieved and included in generation context.",
      "properties": {
        "source": {
          "type": "string",
          "description": "Source entity of the memory graph relationship.",
          "x-presence": "implicit"
        },
        "relationship": {
          "type": "string",
          "description": "Relationship label connecting the source and destination entities.",
          "x-presence": "implicit"
        },
        "destination": {
          "type": "string",
          "description": "Destination entity of the memory graph relationship.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "RelationReference",
        "url": "/api/models/schema-1ijit8ceuv#response"
      }
    },
    "llm_v1_common_v1_MemorySearchParams": {
      "type": "object",
      "description": "Parameters used to retrieve relevant memories during generation.",
      "properties": {
        "query": {
          "type": "string",
          "description": "Text submitted to memory retrieval for this generation.",
          "x-presence": "implicit"
        },
        "topK": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum memory matches requested during generation-context retrieval.",
          "x-presence": "implicit"
        },
        "threshold": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Minimum relevance threshold requested for the memory query.",
          "x-presence": "implicit"
        },
        "rerank": {
          "type": "boolean",
          "description": "Whether reranking was requested for the memory search.",
          "x-presence": "implicit"
        },
        "resultsReturned": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of memory records returned by the search.",
          "x-presence": "implicit"
        },
        "relationsReturned": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of graph relationships returned by the search.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "MemorySearchParams",
        "url": "/api/models/schema-1igd5iut01#response"
      }
    },
    "llm_v1_common_v1_TurnInfo": {
      "type": "object",
      "description": "Turn position within an agentic generation run",
      "properties": {
        "currentTurn": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Current turn position within the generation run.",
          "x-presence": "implicit"
        },
        "maxTurns": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum turns configured for the generation run.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TurnInfo",
        "url": "/api/models/schema-1ilcikuhu8#response"
      }
    },
    "llm_v1_common_v1_ClientContext": {
      "type": "object",
      "description": "Opaque caller-supplied attributes attached to a conversation message.\n\nValues are strings, including values such as `\"false\"`. The schema allows at most 32 pairs, keys of at most 64 characters, and values of at most 1,024 characters. Keep the entire map well below 8 KiB: Travila also applies an encoded-size limit that includes field overhead and drops context that exceeds it. Short page identifiers and a few relevant values are preferable to a page dump; an oversized map is not automatically shortened.",
      "properties": {
        "values": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Arbitrary client-supplied context for this message (e.g. page, referrer, device, in-app flow). Keys/values are opaque strings.",
          "x-presence": "collection",
          "x-protovalidate": {
            "map": {
              "maxPairs": "32",
              "keys": {
                "string": {
                  "maxLen": "64"
                }
              },
              "values": {
                "string": {
                  "maxLen": "1024"
                }
              }
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-reference-model": {
        "title": "ClientContext",
        "url": "/api/models/schema-1i2sndrl93#response"
      }
    },
    "llm_v1_common_v1_MessageFeedback": {
      "type": "object",
      "description": "One user's feedback on an assistant-generated message.\n\nkind must select a listed feedback representation. Requiredness and allowed values are declared separately.",
      "properties": {
        "kind": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "FEEDBACK_KIND_THUMB",
                "FEEDBACK_KIND_SCALE"
              ],
              "x-enumDescriptions": {
                "FEEDBACK_KIND_THUMB": "Binary positive or negative feedback, represented by a thumbs-up or thumbs-down choice.\n\nbinary thumbs up / down",
                "FEEDBACK_KIND_SCALE": "Feedback expressed as an integer rating from 1 through 10.\n\n1-10 integer scale"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "FEEDBACK_KIND_THUMB",
              "number": 0,
              "canonical": true,
              "description": "Binary positive or negative feedback, represented by a thumbs-up or thumbs-down choice.\n\nbinary thumbs up / down"
            },
            {
              "name": "FEEDBACK_KIND_SCALE",
              "number": 1,
              "canonical": true,
              "description": "Feedback expressed as an integer rating from 1 through 10.\n\n1-10 integer scale"
            }
          ],
          "x-enum-description": "Value scale used to interpret recorded feedback.",
          "description": "Rating representation used to interpret the feedback value.",
          "x-presence": "explicit",
          "x-protovalidate": {
            "required": true,
            "enum": {
              "definedOnly": true
            }
          },
          "x-validation-scope": "request"
        },
        "thumbUp": {
          "type": "boolean",
          "description": "Positive when true and negative when false; used for THUMB feedback.",
          "x-presence": "implicit"
        },
        "rating": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Numeric quality rating for SCALE feedback; the scale endpoints mean poor and excellent.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "10",
              "gte": "0"
            }
          },
          "x-validation-scope": "request"
        },
        "reason": {
          "type": "string",
          "description": "Optional explanation for the rating.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "1000"
            }
          },
          "x-validation-scope": "request"
        },
        "ratedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when feedback was submitted (server-set)",
          "x-presence": "message"
        },
        "ratedBy": {
          "type": "string",
          "description": "Identifier of the user who submitted this feedback. Set by the server from the authenticated user identity; never client-supplied. Each user has one feedback entry per message.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "MessageFeedback",
        "url": "/api/models/schema-1iroqctqt1#response"
      },
      "x-request-required": [
        "kind"
      ]
    },
    "llm_v1_services_gateway_v1_DeleteMessageRatingRequest": {
      "type": "object",
      "description": "Withdraw the caller's own rating on a message in a thread. As with RateMessage, the rater is derived server-side from the verified request headers; there is deliberately no \"whose rating\" parameter.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "messageSequence": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Message whose rating to withdraw (by sequence number)",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "gte": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "conversationKey",
        "messageSequence"
      ],
      "required": [
        "conversationKey",
        "messageSequence"
      ]
    },
    "llm_v1_services_gateway_v1_DeleteMessageRatingResponse": {
      "type": "object",
      "description": "Result of withdrawing the caller’s rating on a conversation message.",
      "properties": {
        "ratedMessage": {
          "description": "The message with the caller's entry removed from the feedback list",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Message"
            }
          ]
        },
        "removed": {
          "type": "boolean",
          "description": "False when the caller had no rating on this message — an idempotent success, not an error.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_SendMessageSyncRequest": {
      "type": "object",
      "description": "Input for submitting a user message and waiting for generation output.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "userMessage": {
          "description": "Required — see the note on SendMessageRequest.user\\_message. The sync path is where the defect was actually observed: it holds the connection open, waits out a real generation, and hands back messages and a COMPLETED status, so a dropped turn field looks exactly like a working call.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_MessageInput"
            }
          ],
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        },
        "overrideGenerationConfig": {
          "description": "Per-call configuration overrides applied to the active profile’s configuration, or otherwise the conversation default. Supplied scalar values, including zero, empty or false, replace the base value; omitted values inherit. Empty repeated or map values inherit. Use clear\\_tools to clear inherited tools and clear\\_client\\_tools to clear inherited client tools.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ]
        },
        "setActiveProfileId": {
          "type": "string",
          "description": "Set the active agent profile for this and subsequent conversation turns.",
          "x-presence": "implicit"
        },
        "setActiveProfileVersion": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Version of the active agent profile forwarded with this turn.",
          "x-presence": "implicit"
        },
        "overrideMcpServers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerReferenceInput"
          },
          "description": "MCP servers for this turn only. A nonempty list replaces the active profile’s or conversation’s list for tool discovery and execution; an empty list inherits the resolved configuration.",
          "x-presence": "collection"
        },
        "experiment": {
          "description": "Dataset-run attribution for a scripted evaluation turn. Leave unset for ordinary conversation traffic.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ExperimentContext"
            }
          ]
        }
      },
      "x-request-required": [
        "conversationKey",
        "userMessage"
      ],
      "required": [
        "conversationKey",
        "userMessage"
      ]
    },
    "llm_v1_services_gateway_v1_SendMessageSyncResponse": {
      "type": "object",
      "description": "Result of submitting a user message and waiting for generation output.",
      "properties": {
        "runId": {
          "type": "string",
          "description": "Identifier of the generation run associated with the operation.",
          "x-presence": "implicit"
        },
        "interruptedPriorRun": {
          "type": "boolean",
          "description": "Whether submitting this turn interrupted a preceding generation run.",
          "x-presence": "implicit"
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_Message"
          },
          "description": "Conversation messages returned by the generation segment.",
          "x-presence": "collection"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "AGENT_STATUS_ACTIVE",
                "AGENT_STATUS_GENERATING",
                "AGENT_STATUS_EXECUTING_TOOLS",
                "AGENT_STATUS_COMPLETED",
                "AGENT_STATUS_FAILED",
                "AGENT_STATUS_QUEUED",
                "AGENT_STATUS_AWAITING_CLIENT_TOOLS",
                "AGENT_STATUS_CANCELLED",
                "AGENT_STATUS_TIMED_OUT"
              ],
              "x-enumDescriptions": {
                "AGENT_STATUS_ACTIVE": "The run is active and has not yet reached a more specific execution phase or terminal outcome.",
                "AGENT_STATUS_GENERATING": "The run is generating a model response.",
                "AGENT_STATUS_EXECUTING_TOOLS": "The run is executing server-side tools.",
                "AGENT_STATUS_COMPLETED": "The run finished successfully.",
                "AGENT_STATUS_FAILED": "The run ended with a failure; inspect its error or end reason.",
                "AGENT_STATUS_QUEUED": "The incoming message is queued behind an ongoing run under the queue interruption policy.\n\nMessage was queued due to QUEUE interrupt policy",
                "AGENT_STATUS_AWAITING_CLIENT_TOOLS": "The run is waiting for the caller to execute client-side tools and submit their results. This is a non-terminal phase. EXECUTING\\_TOOLS instead means the server is running an MCP tool.",
                "AGENT_STATUS_CANCELLED": "The run ended because a client or its invocation cancelled it.\n\nTerminal: stopped by a client cancel or a cancelled invocation",
                "AGENT_STATUS_TIMED_OUT": "The run ended because a run-level time limit elapsed.\n\nTerminal: a run-level bound elapsed"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "AGENT_STATUS_ACTIVE",
              "number": 0,
              "canonical": true,
              "description": "The run is active and has not yet reached a more specific execution phase or terminal outcome."
            },
            {
              "name": "AGENT_STATUS_GENERATING",
              "number": 1,
              "canonical": true,
              "description": "The run is generating a model response."
            },
            {
              "name": "AGENT_STATUS_EXECUTING_TOOLS",
              "number": 2,
              "canonical": true,
              "description": "The run is executing server-side tools."
            },
            {
              "name": "AGENT_STATUS_COMPLETED",
              "number": 3,
              "canonical": true,
              "description": "The run finished successfully."
            },
            {
              "name": "AGENT_STATUS_FAILED",
              "number": 4,
              "canonical": true,
              "description": "The run ended with a failure; inspect its error or end reason."
            },
            {
              "name": "AGENT_STATUS_QUEUED",
              "number": 5,
              "canonical": true,
              "description": "The incoming message is queued behind an ongoing run under the queue interruption policy.\n\nMessage was queued due to QUEUE interrupt policy"
            },
            {
              "name": "AGENT_STATUS_AWAITING_CLIENT_TOOLS",
              "number": 6,
              "canonical": true,
              "description": "The run is waiting for the caller to execute client-side tools and submit their results. This is a non-terminal phase. EXECUTING\\_TOOLS instead means the server is running an MCP tool."
            },
            {
              "name": "AGENT_STATUS_CANCELLED",
              "number": 7,
              "canonical": true,
              "description": "The run ended because a client or its invocation cancelled it.\n\nTerminal: stopped by a client cancel or a cancelled invocation"
            },
            {
              "name": "AGENT_STATUS_TIMED_OUT",
              "number": 8,
              "canonical": true,
              "description": "The run ended because a run-level time limit elapsed.\n\nTerminal: a run-level bound elapsed"
            }
          ],
          "x-enum-description": "Execution state of an agent generation run, separate from the reason a terminal run ended.\n\nThe terminal states are COMPLETED, FAILED, CANCELLED and TIMED\\_OUT. Treat every other or unrecognized value as non-terminal.\n\nReasons such as rejected, malformed or discarded belong in the reason field rather than in this status.",
          "description": "Generation status reported when the synchronous wait returns.",
          "x-presence": "explicit"
        },
        "aggregateUsage": {
          "description": "Aggregated model usage reported for the generation run.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Usage"
            }
          ]
        },
        "error": {
          "description": "Structured error for partial success scenarios (some messages generated before failure). Full failures propagate as TerminalError → HTTP error status + RpcError JSON body.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_RpcError"
            }
          ]
        },
        "pendingClientTools": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolCall"
          },
          "description": "Tool calls dispatched for execution by the client.",
          "x-presence": "collection"
        },
        "clientToolCursor": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Latest client-tool dispatch sequence represented by this response.",
          "x-presence": "implicit"
        }
      }
    },
    "common_v1_RpcError": {
      "type": "object",
      "description": "Error payload containing an API-defined error code, a message and structured details. Interpret `code` using the ErrorCode enumeration published with this API; numeric equivalence with `google.rpc.Status` is not implied.",
      "properties": {
        "code": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ERROR_CODE_CANCELLED",
                "ERROR_CODE_UNKNOWN",
                "ERROR_CODE_INVALID_ARGUMENT",
                "ERROR_CODE_DEADLINE_EXCEEDED",
                "ERROR_CODE_NOT_FOUND",
                "ERROR_CODE_ALREADY_EXISTS",
                "ERROR_CODE_PERMISSION_DENIED",
                "ERROR_CODE_RESOURCE_EXHAUSTED",
                "ERROR_CODE_FAILED_PRECONDITION",
                "ERROR_CODE_ABORTED",
                "ERROR_CODE_OUT_OF_RANGE",
                "ERROR_CODE_UNIMPLEMENTED",
                "ERROR_CODE_INTERNAL",
                "ERROR_CODE_UNAVAILABLE",
                "ERROR_CODE_DATA_LOSS",
                "ERROR_CODE_UNAUTHENTICATED",
                "ERROR_CODE_MODEL_INVALID",
                "ERROR_CODE_MODEL_UNAVAILABLE",
                "ERROR_CODE_MODERATION_FLAGGED",
                "ERROR_CODE_GENERATION_FAILED",
                "ERROR_CODE_TOOL_EXECUTION_FAILED",
                "ERROR_CODE_UPSTREAM_PROVIDER",
                "ERROR_CODE_VALIDATION_EXHAUSTED",
                "ERROR_CODE_PAYMENT_REQUIRED"
              ],
              "x-enumDescriptions": {
                "ERROR_CODE_CANCELLED": "The caller cancelled the operation before it completed.\n\nCanonical error categories.\n\n499 — Cancelled by caller",
                "ERROR_CODE_UNKNOWN": "The operation failed without a more specific error classification.\n\n500 — Unknown error",
                "ERROR_CODE_INVALID_ARGUMENT": "The request contains an invalid argument or field value.\n\n400 — Bad input, invalid field values",
                "ERROR_CODE_DEADLINE_EXCEEDED": "The operation did not complete before its deadline.\n\n504 — Operation timed out",
                "ERROR_CODE_NOT_FOUND": "The requested resource does not exist or could not be found.\n\n404 — Resource does not exist",
                "ERROR_CODE_ALREADY_EXISTS": "The requested creation conflicts with a resource that already exists.\n\n409 — Resource already exists",
                "ERROR_CODE_PERMISSION_DENIED": "The authenticated caller is not permitted to perform the operation.\n\n403 — Caller lacks permission",
                "ERROR_CODE_RESOURCE_EXHAUSTED": "A quota, rate limit or other capacity limit prevented the operation.\n\n429 — Rate limited or quota exceeded",
                "ERROR_CODE_FAILED_PRECONDITION": "The operation requires a system or resource state that is not currently satisfied.\n\n400 — System not in required state",
                "ERROR_CODE_ABORTED": "The operation was aborted, for example by a concurrent modification conflict.\n\n409 — Concurrent conflict, retry may succeed",
                "ERROR_CODE_OUT_OF_RANGE": "An argument is outside the range supported by this operation.\n\n400 — Value outside valid range",
                "ERROR_CODE_UNIMPLEMENTED": "The requested operation is not implemented.\n\n501 — Not implemented",
                "ERROR_CODE_INTERNAL": "An internal failure prevented the operation from completing.\n\n500 — Internal error",
                "ERROR_CODE_UNAVAILABLE": "The service or a required dependency is temporarily unavailable.\n\n503 — Service temporarily unavailable",
                "ERROR_CODE_DATA_LOSS": "The operation encountered unrecoverable loss or corruption of data.\n\n500 — Unrecoverable data loss",
                "ERROR_CODE_UNAUTHENTICATED": "Authentication credentials are missing or invalid.\n\n401 — Missing or invalid credentials",
                "ERROR_CODE_MODEL_INVALID": "The requested model identifier is absent from the model catalog.\n\nDomain-specific error categories.\n\n400 — Model ID not found in catalog",
                "ERROR_CODE_MODEL_UNAVAILABLE": "The model exists, but no provider is currently available to serve it.\n\n503 — Model exists but all providers are down",
                "ERROR_CODE_MODERATION_FLAGGED": "Content moderation flagged the submitted content.\n\n403 — Input flagged by content moderation",
                "ERROR_CODE_GENERATION_FAILED": "Model generation failed after its configured attempts.\n\n500 — LLM generation failed after retries",
                "ERROR_CODE_TOOL_EXECUTION_FAILED": "Execution of a requested tool failed.\n\n500 — MCP tool call failed",
                "ERROR_CODE_UPSTREAM_PROVIDER": "An upstream model provider returned an error.\n\n503 — Upstream provider returned error",
                "ERROR_CODE_VALIDATION_EXHAUSTED": "Structured-output validation still failed after the configured attempts.\n\n500 — Structured output validation failed after all retries",
                "ERROR_CODE_PAYMENT_REQUIRED": "The account lacks the credits required for the operation.\n\n402 — Insufficient credits"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "ERROR_CODE_CANCELLED",
              "number": 0,
              "canonical": true,
              "description": "The caller cancelled the operation before it completed.\n\nCanonical error categories.\n\n499 — Cancelled by caller"
            },
            {
              "name": "ERROR_CODE_UNKNOWN",
              "number": 1,
              "canonical": true,
              "description": "The operation failed without a more specific error classification.\n\n500 — Unknown error"
            },
            {
              "name": "ERROR_CODE_INVALID_ARGUMENT",
              "number": 2,
              "canonical": true,
              "description": "The request contains an invalid argument or field value.\n\n400 — Bad input, invalid field values"
            },
            {
              "name": "ERROR_CODE_DEADLINE_EXCEEDED",
              "number": 3,
              "canonical": true,
              "description": "The operation did not complete before its deadline.\n\n504 — Operation timed out"
            },
            {
              "name": "ERROR_CODE_NOT_FOUND",
              "number": 4,
              "canonical": true,
              "description": "The requested resource does not exist or could not be found.\n\n404 — Resource does not exist"
            },
            {
              "name": "ERROR_CODE_ALREADY_EXISTS",
              "number": 5,
              "canonical": true,
              "description": "The requested creation conflicts with a resource that already exists.\n\n409 — Resource already exists"
            },
            {
              "name": "ERROR_CODE_PERMISSION_DENIED",
              "number": 6,
              "canonical": true,
              "description": "The authenticated caller is not permitted to perform the operation.\n\n403 — Caller lacks permission"
            },
            {
              "name": "ERROR_CODE_RESOURCE_EXHAUSTED",
              "number": 7,
              "canonical": true,
              "description": "A quota, rate limit or other capacity limit prevented the operation.\n\n429 — Rate limited or quota exceeded"
            },
            {
              "name": "ERROR_CODE_FAILED_PRECONDITION",
              "number": 8,
              "canonical": true,
              "description": "The operation requires a system or resource state that is not currently satisfied.\n\n400 — System not in required state"
            },
            {
              "name": "ERROR_CODE_ABORTED",
              "number": 9,
              "canonical": true,
              "description": "The operation was aborted, for example by a concurrent modification conflict.\n\n409 — Concurrent conflict, retry may succeed"
            },
            {
              "name": "ERROR_CODE_OUT_OF_RANGE",
              "number": 10,
              "canonical": true,
              "description": "An argument is outside the range supported by this operation.\n\n400 — Value outside valid range"
            },
            {
              "name": "ERROR_CODE_UNIMPLEMENTED",
              "number": 11,
              "canonical": true,
              "description": "The requested operation is not implemented.\n\n501 — Not implemented"
            },
            {
              "name": "ERROR_CODE_INTERNAL",
              "number": 12,
              "canonical": true,
              "description": "An internal failure prevented the operation from completing.\n\n500 — Internal error"
            },
            {
              "name": "ERROR_CODE_UNAVAILABLE",
              "number": 13,
              "canonical": true,
              "description": "The service or a required dependency is temporarily unavailable.\n\n503 — Service temporarily unavailable"
            },
            {
              "name": "ERROR_CODE_DATA_LOSS",
              "number": 14,
              "canonical": true,
              "description": "The operation encountered unrecoverable loss or corruption of data.\n\n500 — Unrecoverable data loss"
            },
            {
              "name": "ERROR_CODE_UNAUTHENTICATED",
              "number": 15,
              "canonical": true,
              "description": "Authentication credentials are missing or invalid.\n\n401 — Missing or invalid credentials"
            },
            {
              "name": "ERROR_CODE_MODEL_INVALID",
              "number": 16,
              "canonical": true,
              "description": "The requested model identifier is absent from the model catalog.\n\nDomain-specific error categories.\n\n400 — Model ID not found in catalog"
            },
            {
              "name": "ERROR_CODE_MODEL_UNAVAILABLE",
              "number": 17,
              "canonical": true,
              "description": "The model exists, but no provider is currently available to serve it.\n\n503 — Model exists but all providers are down"
            },
            {
              "name": "ERROR_CODE_MODERATION_FLAGGED",
              "number": 18,
              "canonical": true,
              "description": "Content moderation flagged the submitted content.\n\n403 — Input flagged by content moderation"
            },
            {
              "name": "ERROR_CODE_GENERATION_FAILED",
              "number": 19,
              "canonical": true,
              "description": "Model generation failed after its configured attempts.\n\n500 — LLM generation failed after retries"
            },
            {
              "name": "ERROR_CODE_TOOL_EXECUTION_FAILED",
              "number": 20,
              "canonical": true,
              "description": "Execution of a requested tool failed.\n\n500 — MCP tool call failed"
            },
            {
              "name": "ERROR_CODE_UPSTREAM_PROVIDER",
              "number": 21,
              "canonical": true,
              "description": "An upstream model provider returned an error.\n\n503 — Upstream provider returned error"
            },
            {
              "name": "ERROR_CODE_VALIDATION_EXHAUSTED",
              "number": 22,
              "canonical": true,
              "description": "Structured-output validation still failed after the configured attempts.\n\n500 — Structured output validation failed after all retries"
            },
            {
              "name": "ERROR_CODE_PAYMENT_REQUIRED",
              "number": 23,
              "canonical": true,
              "description": "The account lacks the credits required for the operation.\n\n402 — Insufficient credits"
            }
          ],
          "x-enum-description": "API-defined categories describing why a request or operation failed. Use the published symbolic name and accompanying error details. These numeric assignments are not interchangeable with `google.rpc.Code`.",
          "description": "Machine-readable error code. Clients switch on this field.",
          "x-presence": "explicit"
        },
        "message": {
          "type": "string",
          "description": "Human-readable error description. Intended for developers, not end users. Must not be parsed programmatically — use code and details instead.",
          "x-presence": "implicit"
        },
        "isTerminal": {
          "type": "boolean",
          "description": "Whether this error is classified as terminal (non-retryable). A terminal error should not trigger automatic retries of the failed operation. A nonterminal error may reflect a transient condition that can resolve on retry.",
          "x-presence": "implicit"
        },
        "details": {
          "description": "Structured error details. At most one of each detail type.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_ErrorDetails"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "RpcError",
        "url": "/api/models/schema-1fajlacjs0#response"
      }
    },
    "common_v1_ErrorDetails": {
      "type": "object",
      "description": "Typed error details container. Concrete fields instead of Any for type safety across languages. At most one of each detail type.",
      "properties": {
        "errorInfo": {
          "description": "Identifies the error for machine consumption. Required on all errors by this error contract.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_ErrorInfo"
            }
          ]
        },
        "retryInfo": {
          "description": "Retry guidance for transient errors.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_RetryInfo"
            }
          ]
        },
        "fieldViolations": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/common_v1_FieldViolation"
          },
          "description": "Field-level validation failures.",
          "x-presence": "collection"
        },
        "upstreamError": {
          "description": "Upstream provider error context.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_UpstreamError"
            }
          ]
        },
        "modelError": {
          "description": "Model-specific error context.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_ModelError"
            }
          ]
        },
        "helpLinks": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/common_v1_HelpLink"
          },
          "description": "Help links for error resolution.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "ErrorDetails",
        "url": "/api/models/schema-1f7d7kh0s1#response"
      }
    },
    "common_v1_ErrorInfo": {
      "type": "object",
      "description": "Machine-readable error identification (per AIP-193, every error must include this).",
      "properties": {
        "reason": {
          "type": "string",
          "description": "Stable machine-readable reason string (e.g., \"MODEL\\_NOT\\_FOUND\", \"RATE\\_LIMITED\", \"MODERATION\\_FLAGGED\"). Unique within the domain. Clients may switch on this field.",
          "x-presence": "implicit"
        },
        "domain": {
          "type": "string",
          "description": "Machine-readable namespace identifying the origin of the error.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Arbitrary key-value metadata. If the message field mentions a specific value (model name, field path, etc.), it MUST also appear here.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "ErrorInfo",
        "url": "/api/models/schema-1es9uii84j#response"
      }
    },
    "common_v1_RetryInfo": {
      "type": "object",
      "description": "Retry guidance for transient errors.",
      "properties": {
        "retryDelayMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Suggested minimum delay before retrying, in milliseconds.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "RetryInfo",
        "url": "/api/models/schema-1f439vae2d#response"
      }
    },
    "common_v1_FieldViolation": {
      "type": "object",
      "description": "A single field-level validation violation.",
      "properties": {
        "field": {
          "type": "string",
          "description": "Dot-separated path to the field (e.g., \"generation\\_config.model\").",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the violation.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "FieldViolation",
        "url": "/api/models/schema-1eu5noj3g1#response"
      }
    },
    "common_v1_UpstreamError": {
      "type": "object",
      "description": "Context from an upstream provider error, including the provider name when reported.",
      "properties": {
        "provider": {
          "type": "string",
          "description": "Name of the upstream provider that reported the error.",
          "x-presence": "implicit"
        },
        "statusCode": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "HTTP status code returned by the provider.",
          "x-presence": "implicit"
        },
        "rawBody": {
          "type": "string",
          "description": "Raw error body from the provider, truncated to 512 bytes.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "UpstreamError",
        "url": "/api/models/schema-1f66rlcp5a#response"
      }
    },
    "common_v1_ModelError": {
      "type": "object",
      "description": "Model-specific error context.",
      "properties": {
        "modelId": {
          "type": "string",
          "description": "The model ID that caused the error.",
          "x-presence": "implicit"
        },
        "reason": {
          "type": "string",
          "description": "Why the model failed (e.g., \"invalid\", \"unavailable\", \"moderation\\_flagged\").",
          "x-presence": "implicit"
        },
        "alternativesTried": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alternative models that were tried or could be tried.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "ModelError",
        "url": "/api/models/schema-1f2939tg20#response"
      }
    },
    "common_v1_HelpLink": {
      "type": "object",
      "description": "A help link for error resolution.",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL to documentation or resolution guide.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Description of what the link provides.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "HelpLink",
        "url": "/api/models/schema-1f0qdi91b8#response"
      }
    },
    "llm_v1_services_gateway_v1_UpdateSettingsRequest": {
      "type": "object",
      "description": "Input for updating the conversation’s settings.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "settings": {
          "description": "Conversation settings to apply.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ConversationSettingsInput"
            }
          ]
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_services_gateway_v1_UpdateSettingsResponse": {
      "type": "object",
      "description": "Result of updating the conversation’s settings.",
      "properties": {
        "settings": {
          "description": "Updated conversation settings returned by the operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ConversationSettings"
            }
          ]
        }
      }
    },
    "llm_v1_common_v1_ConversationSettings": {
      "type": "object",
      "description": "Conversation-level settings controlling behavior across sends\n\n[`maxLoops`](/api/models/schema-ph6avse89k#request-field-maxloops) caps the **total number of generations** in a run — not the number of tool round trips. Default is **2**, which is what one round trip costs: a first generation to emit the tool call, a second to synthesize its result.\n\nOn the final generation the model is sent **no tools at all** (the request omits the [`tools`](/api/models/schema-1h82h7ri5p#request-field-tools) array), so it cannot emit a call there. `maxLoops: 1` therefore means a single tool-free reply — a valid way to ask for one, but not a way to get one tool round trip.",
      "properties": {
        "interruptPolicy": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "INTERRUPT_POLICY_REJECT_NEW",
                "INTERRUPT_POLICY_CANCEL_ONGOING",
                "INTERRUPT_POLICY_QUEUE",
                "INTERRUPT_POLICY_IGNORE"
              ],
              "x-enumDescriptions": {
                "INTERRUPT_POLICY_REJECT_NEW": "Reject the new send with an error while a run is active; do not append its user message.\n\nReject the new Send with an error if a run is active",
                "INTERRUPT_POLICY_CANCEL_ONGOING": "Cancel the ongoing run and start a new run for the incoming message.\n\nCancel the ongoing run and immediately start a new one with the new message",
                "INTERRUPT_POLICY_QUEUE": "Queue the incoming message to run after the current run completes.\n\nQueue the new Send; it will run after the current run completes",
                "INTERRUPT_POLICY_IGNORE": "Accept the send without persisting its message or starting a new run; let the ongoing run continue."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "INTERRUPT_POLICY_REJECT_NEW",
              "number": 0,
              "canonical": true,
              "description": "Reject the new send with an error while a run is active; do not append its user message.\n\nReject the new Send with an error if a run is active"
            },
            {
              "name": "INTERRUPT_POLICY_CANCEL_ONGOING",
              "number": 1,
              "canonical": true,
              "description": "Cancel the ongoing run and start a new run for the incoming message.\n\nCancel the ongoing run and immediately start a new one with the new message"
            },
            {
              "name": "INTERRUPT_POLICY_QUEUE",
              "number": 2,
              "canonical": true,
              "description": "Queue the incoming message to run after the current run completes.\n\nQueue the new Send; it will run after the current run completes"
            },
            {
              "name": "INTERRUPT_POLICY_IGNORE",
              "number": 3,
              "canonical": true,
              "description": "Accept the send without persisting its message or starting a new run; let the ongoing run continue."
            }
          ],
          "x-enum-description": "How a conversation handles a new send while another generation run is active.",
          "description": "Policy for an incoming message while another generation run is active.",
          "x-presence": "explicit"
        },
        "maxLoops": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Default limit on agentic generation loops for the conversation.",
          "x-presence": "implicit"
        },
        "maxParallelTools": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of tool executions allowed concurrently by this configuration.",
          "x-presence": "implicit"
        },
        "mcpServers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerReference"
          },
          "description": "MCP servers available to this conversation; used for tool discovery/filtering",
          "x-presence": "collection"
        },
        "toolPolicy": {
          "description": "Optional per-conversation tool execution policy applied to AgentConfig",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolExecutionPolicy"
            }
          ]
        },
        "promptVariables": {
          "type": "object",
          "additionalProperties": true,
          "description": "Typed values used when rendering profile prompt templates. Numbers, arrays, Boolean values and strings retain their respective JSON types. The values are shared by profiles in the conversation and can be refreshed with UpdatePromptVariables. Switching profiles renders the new template with the same values.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "ConversationSettings",
        "url": "/api/models/schema-ph6avse89k#response"
      }
    },
    "llm_v1_services_gateway_v1_UpdatePromptVariablesRequest": {
      "type": "object",
      "description": "Inputs for merging updated prompt variables into a conversation. The profile template is rendered with the updated variables on the next turn.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "variables": {
          "type": "object",
          "additionalProperties": true,
          "description": "Prompt-variable values to merge into the conversation’s settings.",
          "x-presence": "message"
        },
        "updateMask": {
          "type": "string",
          "description": "Field paths selecting which prompt variables to update.",
          "x-presence": "message"
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_services_gateway_v1_UpdatePromptVariablesResponse": {
      "type": "object",
      "description": "Result of merging prompt variables into conversation settings.",
      "properties": {
        "settings": {
          "description": "The merged conversation settings.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ConversationSettings"
            }
          ]
        }
      }
    },
    "llm_v1_services_gateway_v1_UpdateDefaultGenerationConfigRequest": {
      "type": "object",
      "description": "Input for updating the conversation’s base generation configuration.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "defaultGenerationConfig": {
          "description": "Base model and tool configuration for turns in this conversation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ]
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_services_gateway_v1_UpdateDefaultGenerationConfigResponse": {
      "type": "object",
      "description": "Result of updating the conversation’s base generation configuration.",
      "properties": {
        "defaultGenerationConfig": {
          "description": "Base model and tool configuration for turns in this conversation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig"
            }
          ]
        }
      }
    },
    "llm_v1_services_gateway_v1_UpdateContextManagementSettingsRequest": {
      "type": "object",
      "description": "Input for updating the conversation’s context compaction configuration.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "contextManagementSettings": {
          "description": "Configuration governing the conversation’s context management and compaction.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_ContextManagementSettingsInput"
            }
          ]
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_services_gateway_v1_UpdateContextManagementSettingsResponse": {
      "type": "object",
      "description": "Result of updating the conversation’s context compaction configuration.",
      "properties": {
        "contextManagementSettings": {
          "description": "Configuration governing the conversation’s context management and compaction.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_ContextManagementSettings"
            }
          ]
        }
      }
    },
    "llm_v1_actors_conversation_v1_ContextManagementSettings": {
      "type": "object",
      "description": "Configuration for context management",
      "properties": {
        "strategy": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "CONTEXT_STRATEGY_COMPACTION",
                "CONTEXT_STRATEGY_WINDOWING",
                "CONTEXT_STRATEGY_NONE"
              ],
              "x-enumDescriptions": {
                "CONTEXT_STRATEGY_COMPACTION": "Use completed compaction summaries and remaining history; fall back to windowing when no completed summary is available.",
                "CONTEXT_STRATEGY_WINDOWING": "Keep a bounded window of recent conversation messages according to the windowing configuration.",
                "CONTEXT_STRATEGY_NONE": "Pass the conversation history without applying compaction or windowing."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "CONTEXT_STRATEGY_COMPACTION",
              "number": 0,
              "canonical": true,
              "description": "Use completed compaction summaries and remaining history; fall back to windowing when no completed summary is available."
            },
            {
              "name": "CONTEXT_STRATEGY_WINDOWING",
              "number": 1,
              "canonical": true,
              "description": "Keep a bounded window of recent conversation messages according to the windowing configuration."
            },
            {
              "name": "CONTEXT_STRATEGY_NONE",
              "number": 2,
              "canonical": true,
              "description": "Pass the conversation history without applying compaction or windowing."
            }
          ],
          "x-enum-description": "How stored conversation history is selected or summarized for model context.",
          "description": "Context management strategy selected for the conversation.",
          "x-presence": "explicit"
        },
        "compactionConfig": {
          "description": "Configuration applied when summarizing the conversation context.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_CompactionConfig"
            }
          ]
        },
        "windowingConfig": {
          "description": "Rules selecting the message window retained in model context.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_WindowingConfig"
            }
          ]
        },
        "selectiveExclusionConfig": {
          "description": "Rules selecting content to omit from the model context.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_SelectiveExclusionConfig"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ContextManagementSettings",
        "url": "/api/models/schema-1hgrvsu34j#response"
      }
    },
    "llm_v1_actors_conversation_v1_CompactionConfig": {
      "type": "object",
      "description": "Configuration for compaction strategy",
      "properties": {
        "mode": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "COMPACTION_MODE_SYNC",
                "COMPACTION_MODE_ASYNC"
              ],
              "x-enumDescriptions": {
                "COMPACTION_MODE_SYNC": "Wait for compaction to finish before continuing the dependent operation.",
                "COMPACTION_MODE_ASYNC": "Start compaction asynchronously and apply its result when it becomes available."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "COMPACTION_MODE_SYNC",
              "number": 0,
              "canonical": true,
              "description": "Wait for compaction to finish before continuing the dependent operation."
            },
            {
              "name": "COMPACTION_MODE_ASYNC",
              "number": 1,
              "canonical": true,
              "description": "Start compaction asynchronously and apply its result when it becomes available."
            }
          ],
          "x-enum-description": "Whether context compaction blocks the triggering operation or proceeds asynchronously.",
          "description": "Context compaction mode selected by the operation.\n\nSYNC, ASYNC",
          "x-presence": "explicit"
        },
        "threshold": {
          "description": "Token-count or context-window-percentage threshold that triggers compaction.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_ThresholdConfig"
            }
          ]
        },
        "generationConfig": {
          "description": "Separate config for compaction LLM calls.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig"
            }
          ]
        },
        "preserveRecent": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Messages to keep uncompacted.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "CompactionConfig",
        "url": "/api/models/schema-1hbvkcgu5m#response"
      }
    },
    "llm_v1_actors_conversation_v1_ThresholdConfig": {
      "type": "object",
      "description": "Threshold configuration for triggering compaction\n\ntoken\\_count and percentage are mutually exclusive alternatives. Independent tracked fields do not enforce this relationship.",
      "properties": {
        "tokenCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Absolute token limit.",
          "x-presence": "explicit"
        },
        "percentage": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "% of model's context window.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "ThresholdConfig",
        "url": "/api/models/schema-1frig4k431#response"
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.compaction_threshold",
            "message": "Threshold configuration for triggering compaction",
            "expression": "[has(this.token_count), has(this.percentage)].filter(f, f).size() <= 1"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "llm_v1_actors_conversation_v1_WindowingConfig": {
      "type": "object",
      "description": "Configuration for windowing strategy",
      "properties": {
        "maxMessages": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of conversation messages to retain in the context window.\n\nDefault: 100",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "WindowingConfig",
        "url": "/api/models/schema-1he7ulevif#response"
      }
    },
    "llm_v1_actors_conversation_v1_SelectiveExclusionConfig": {
      "type": "object",
      "description": "Configuration for selective exclusion",
      "properties": {
        "excludeToolResults": {
          "type": "boolean",
          "description": "Whether tool-result content is excluded from model context.",
          "x-presence": "implicit"
        },
        "excludeImages": {
          "type": "boolean",
          "description": "Whether image content is excluded from model context.",
          "x-presence": "implicit"
        },
        "excludeFiles": {
          "type": "boolean",
          "description": "Whether file content is excluded from model context.",
          "x-presence": "implicit"
        },
        "excludeReasoning": {
          "type": "boolean",
          "description": "When true, reasoning/thinking content parts are excluded from context",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "SelectiveExclusionConfig",
        "url": "/api/models/schema-1hc73qpaio#response"
      }
    },
    "llm_v1_services_gateway_v1_CompactConversationRequest": {
      "type": "object",
      "description": "Input for compacting the conversation’s model context.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_services_gateway_v1_CompactConversationResponse": {
      "type": "object",
      "description": "Result of compacting the conversation's model context. Token counts describe the selected source span and its replacement summary, not the entire context window. Counts and duration are unavailable while asynchronous compaction is pending.",
      "properties": {
        "compactionId": {
          "type": "string",
          "description": "Identifier assigned to this context compaction.",
          "x-presence": "implicit"
        },
        "tokensBefore": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Estimated tokens in the source messages being summarized, not the compaction trigger estimate.",
          "x-presence": "implicit"
        },
        "tokensAfter": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Tokens in the generated summary, using provider-reported usage when available.",
          "x-presence": "implicit"
        },
        "tokensSaved": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Source count minus summary count. The counts can use different methods; this is not an invoice saving.",
          "x-presence": "implicit"
        },
        "durationMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Recorded compaction duration in milliseconds; it can be zero. Measure client elapsed time for latency comparisons.",
          "x-presence": "implicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "COMPACTION_STATUS_PENDING",
                "COMPACTION_STATUS_COMPLETED",
                "COMPACTION_STATUS_FAILED"
              ],
              "x-enumDescriptions": {
                "COMPACTION_STATUS_PENDING": "Compaction was started and its result is still pending.",
                "COMPACTION_STATUS_COMPLETED": "Compaction completed and produced its result.",
                "COMPACTION_STATUS_FAILED": "Compaction failed; inspect the associated error."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "COMPACTION_STATUS_PENDING",
              "number": 0,
              "canonical": true,
              "description": "Compaction was started and its result is still pending."
            },
            {
              "name": "COMPACTION_STATUS_COMPLETED",
              "number": 1,
              "canonical": true,
              "description": "Compaction completed and produced its result."
            },
            {
              "name": "COMPACTION_STATUS_FAILED",
              "number": 2,
              "canonical": true,
              "description": "Compaction failed; inspect the associated error."
            }
          ],
          "x-enum-description": "Execution state of a conversation context-compaction attempt.",
          "description": "Status reported for this context compaction.",
          "x-presence": "explicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_GetConversationStateRequest": {
      "type": "object",
      "description": "Input for reading conversation history and current generation state. Supply exactly one of conversation\\_key or external\\_id; either addresses the same stored conversation.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "description": "Generated conversation thread ID. Leave empty when addressing by external\\_id.",
          "x-presence": "implicit"
        },
        "externalId": {
          "type": "string",
          "maxLength": 255,
          "description": "Client-supplied conversation identifier from CreateThread, resolved within the caller’s ownership scope.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "maxLen": "255"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-protovalidate": {
        "cel": [
          {
            "id": "native.group.reference",
            "message": "exactly one of conversation_key or external_id must be set",
            "expression": "[size(this.conversation_key) > 0, size(this.external_id) > 0].filter(f, f).size() == 1"
          }
        ]
      },
      "x-validation-scope": "request"
    },
    "llm_v1_services_gateway_v1_GetConversationStateResponse": {
      "type": "object",
      "description": "Result of reading conversation history and current generation state.",
      "properties": {
        "messageHistory": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_Message"
          },
          "description": "Messages recorded in the conversation history.",
          "x-presence": "collection"
        },
        "defaultGenerationConfig": {
          "description": "Base model and tool configuration for turns in this conversation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig"
            }
          ]
        },
        "settings": {
          "description": "Conversation settings returned or supplied for this operation.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ConversationSettings"
            }
          ]
        },
        "activeRunId": {
          "type": "string",
          "description": "Run tracked by the conversation. Older threads can retain the last run ID after it ends; inspect active\\_running before interpreting this as a currently active run.",
          "x-presence": "implicit"
        },
        "activeRunning": {
          "type": "boolean",
          "description": "Whether an active run was observed. False may be omitted from JSON; it does not establish that an accepted or queued request completed.",
          "x-presence": "implicit"
        },
        "contextManagementSettings": {
          "description": "Configuration governing the conversation’s context management and compaction.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_ContextManagementSettings"
            }
          ]
        },
        "compactions": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_actors_conversation_v1_Compaction"
          },
          "description": "Recorded context compaction operations for the conversation.",
          "x-presence": "collection"
        },
        "compactionInProgress": {
          "type": "boolean",
          "description": "Whether a context compaction is currently in progress.",
          "x-presence": "implicit"
        },
        "totalUsage": {
          "description": "Cumulative token usage and cost for the conversation. Read from conversation state rather than a delayed list projection. Absent when no usage has accrued.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Usage"
            }
          ]
        },
        "externalId": {
          "type": "string",
          "description": "Echoed back so a caller addressing by conversation\\_key can reconcile its own identifier without a second lookup. Empty when none was supplied.",
          "x-presence": "implicit"
        },
        "conversationKey": {
          "type": "string",
          "description": "System thread id keying the conversation, always populated. Mirror of external\\_id for the other direction: a caller addressing by external\\_id learns the thread id without a second lookup.",
          "x-presence": "implicit"
        },
        "lastRunStatus": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "AGENT_STATUS_ACTIVE",
                "AGENT_STATUS_GENERATING",
                "AGENT_STATUS_EXECUTING_TOOLS",
                "AGENT_STATUS_COMPLETED",
                "AGENT_STATUS_FAILED",
                "AGENT_STATUS_QUEUED",
                "AGENT_STATUS_AWAITING_CLIENT_TOOLS",
                "AGENT_STATUS_CANCELLED",
                "AGENT_STATUS_TIMED_OUT"
              ],
              "x-enumDescriptions": {
                "AGENT_STATUS_ACTIVE": "The run is active and has not yet reached a more specific execution phase or terminal outcome.",
                "AGENT_STATUS_GENERATING": "The run is generating a model response.",
                "AGENT_STATUS_EXECUTING_TOOLS": "The run is executing server-side tools.",
                "AGENT_STATUS_COMPLETED": "The run finished successfully.",
                "AGENT_STATUS_FAILED": "The run ended with a failure; inspect its error or end reason.",
                "AGENT_STATUS_QUEUED": "The incoming message is queued behind an ongoing run under the queue interruption policy.\n\nMessage was queued due to QUEUE interrupt policy",
                "AGENT_STATUS_AWAITING_CLIENT_TOOLS": "The run is waiting for the caller to execute client-side tools and submit their results. This is a non-terminal phase. EXECUTING\\_TOOLS instead means the server is running an MCP tool.",
                "AGENT_STATUS_CANCELLED": "The run ended because a client or its invocation cancelled it.\n\nTerminal: stopped by a client cancel or a cancelled invocation",
                "AGENT_STATUS_TIMED_OUT": "The run ended because a run-level time limit elapsed.\n\nTerminal: a run-level bound elapsed"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "AGENT_STATUS_ACTIVE",
              "number": 0,
              "canonical": true,
              "description": "The run is active and has not yet reached a more specific execution phase or terminal outcome."
            },
            {
              "name": "AGENT_STATUS_GENERATING",
              "number": 1,
              "canonical": true,
              "description": "The run is generating a model response."
            },
            {
              "name": "AGENT_STATUS_EXECUTING_TOOLS",
              "number": 2,
              "canonical": true,
              "description": "The run is executing server-side tools."
            },
            {
              "name": "AGENT_STATUS_COMPLETED",
              "number": 3,
              "canonical": true,
              "description": "The run finished successfully."
            },
            {
              "name": "AGENT_STATUS_FAILED",
              "number": 4,
              "canonical": true,
              "description": "The run ended with a failure; inspect its error or end reason."
            },
            {
              "name": "AGENT_STATUS_QUEUED",
              "number": 5,
              "canonical": true,
              "description": "The incoming message is queued behind an ongoing run under the queue interruption policy.\n\nMessage was queued due to QUEUE interrupt policy"
            },
            {
              "name": "AGENT_STATUS_AWAITING_CLIENT_TOOLS",
              "number": 6,
              "canonical": true,
              "description": "The run is waiting for the caller to execute client-side tools and submit their results. This is a non-terminal phase. EXECUTING\\_TOOLS instead means the server is running an MCP tool."
            },
            {
              "name": "AGENT_STATUS_CANCELLED",
              "number": 7,
              "canonical": true,
              "description": "The run ended because a client or its invocation cancelled it.\n\nTerminal: stopped by a client cancel or a cancelled invocation"
            },
            {
              "name": "AGENT_STATUS_TIMED_OUT",
              "number": 8,
              "canonical": true,
              "description": "The run ended because a run-level time limit elapsed.\n\nTerminal: a run-level bound elapsed"
            }
          ],
          "x-enum-description": "Execution state of an agent generation run, separate from the reason a terminal run ended.\n\nThe terminal states are COMPLETED, FAILED, CANCELLED and TIMED\\_OUT. Treat every other or unrecognized value as non-terminal.\n\nReasons such as rejected, malformed or discarded belong in the reason field rather than in this status.",
          "description": "Terminal status of the last generation run that has ended. Unset until a run has ended.",
          "x-presence": "explicit"
        }
      }
    },
    "llm_v1_actors_conversation_v1_Compaction": {
      "type": "object",
      "description": "Compaction metadata",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the compaction record.",
          "x-presence": "implicit"
        },
        "startSequence": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Sequence number of the first conversation message represented by the compaction.",
          "x-presence": "implicit"
        },
        "endSequence": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Sequence number of the last conversation message represented by the compaction.",
          "x-presence": "implicit"
        },
        "summary": {
          "type": "string",
          "description": "Summary text produced by conversation compaction.",
          "x-presence": "implicit"
        },
        "originalTokenCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Estimated token count of the context before compaction.",
          "x-presence": "implicit"
        },
        "summaryTokenCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Estimated token count of the generated summary.",
          "x-presence": "implicit"
        },
        "modelUsed": {
          "type": "string",
          "description": "Model identifier used for the context compaction.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "COMPACTION_STATUS_PENDING",
                "COMPACTION_STATUS_COMPLETED",
                "COMPACTION_STATUS_FAILED"
              ],
              "x-enumDescriptions": {
                "COMPACTION_STATUS_PENDING": "Compaction was started and its result is still pending.",
                "COMPACTION_STATUS_COMPLETED": "Compaction completed and produced its result.",
                "COMPACTION_STATUS_FAILED": "Compaction failed; inspect the associated error."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "COMPACTION_STATUS_PENDING",
              "number": 0,
              "canonical": true,
              "description": "Compaction was started and its result is still pending."
            },
            {
              "name": "COMPACTION_STATUS_COMPLETED",
              "number": 1,
              "canonical": true,
              "description": "Compaction completed and produced its result."
            },
            {
              "name": "COMPACTION_STATUS_FAILED",
              "number": 2,
              "canonical": true,
              "description": "Compaction failed; inspect the associated error."
            }
          ],
          "x-enum-description": "Execution state of a conversation context-compaction attempt.",
          "description": "Execution state of the conversation compaction.",
          "x-presence": "explicit"
        },
        "triggerReason": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "COMPACTION_TRIGGER_REASON_THRESHOLD_EXCEEDED",
                "COMPACTION_TRIGGER_REASON_MANUAL"
              ],
              "x-enumDescriptions": {
                "COMPACTION_TRIGGER_REASON_THRESHOLD_EXCEEDED": "Context usage crossed the configured compaction threshold.",
                "COMPACTION_TRIGGER_REASON_MANUAL": "A caller explicitly requested compaction."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "COMPACTION_TRIGGER_REASON_THRESHOLD_EXCEEDED",
              "number": 0,
              "canonical": true,
              "description": "Context usage crossed the configured compaction threshold."
            },
            {
              "name": "COMPACTION_TRIGGER_REASON_MANUAL",
              "number": 1,
              "canonical": true,
              "description": "A caller explicitly requested compaction."
            }
          ],
          "x-enum-description": "Compaction Events\n\nReason a conversation context-compaction attempt was started.",
          "description": "Reason for triggering this compaction (auto threshold vs manual)",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "Compaction",
        "url": "/api/models/schema-1fpqunnq41#response"
      }
    },
    "llm_v1_services_gateway_v1_CreateDailySessionRequest": {
      "type": "object",
      "description": "Daily session (Pipecat)\n\nInput for starting a Pipecat voice session for the conversation.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "agentName": {
          "type": "string",
          "description": "Name of the Pipecat agent to start for the voice session.\n\nrequired",
          "x-presence": "implicit"
        },
        "socayoConfig": {
          "description": "Socayo-specific agent configuration",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_SocayoAgentConfig"
            }
          ]
        },
        "createDailyRoom": {
          "type": "boolean",
          "description": "Whether session creation should also create a Daily room.",
          "x-presence": "implicit"
        },
        "dailyRoomProperties": {
          "description": "Properties passed to Daily when creating the session room.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_DailyRoomPropertiesInput"
            }
          ]
        },
        "dailyMeetingTokenProperties": {
          "description": "Properties passed to Daily when issuing the meeting token.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_DailyMeetingTokenPropertiesInput"
            }
          ]
        },
        "userData": {
          "description": "User data passed to the Pipecat agent at session startup.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_StartSessionUserDataInput"
            }
          ]
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "pipecat_v1_common_v1_SocayoAgentConfig": {
      "type": "object",
      "description": "Socayo-specific agent configuration (bundled)",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Conversation thread identifier associated with the voice session.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the user associated with the operation.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "provider": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "AGENT_PROVIDER_PIPECAT_CLOUD",
                "AGENT_PROVIDER_CEREBRIUM"
              ],
              "x-enumDescriptions": {
                "AGENT_PROVIDER_PIPECAT_CLOUD": "Use the Pipecat Cloud hosting backend.",
                "AGENT_PROVIDER_CEREBRIUM": "Use the Cerebrium hosting backend."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "AGENT_PROVIDER_PIPECAT_CLOUD",
              "number": 0,
              "canonical": true,
              "description": "Use the Pipecat Cloud hosting backend."
            },
            {
              "name": "AGENT_PROVIDER_CEREBRIUM",
              "number": 1,
              "canonical": true,
              "description": "Use the Cerebrium hosting backend."
            }
          ],
          "x-enum-description": "Hosting backend used to deploy or start a voice agent.",
          "description": "Backend provider to use for session orchestration; defaults to PIPECAT\\_CLOUD",
          "x-presence": "explicit"
        },
        "tts": {
          "description": "Bundled sub-configs Speech-synthesis configuration supplied to the Socayo agent.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_TTSConfig"
            }
          ]
        },
        "heygen": {
          "description": "HeyGen avatar and voice configuration for the Socayo agent.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_HeyGenConfig"
            }
          ]
        },
        "transport": {
          "description": "Audio transport settings used by the Socayo agent.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_TransportConfig"
            }
          ]
        },
        "extras": {
          "type": "object",
          "additionalProperties": true,
          "description": "Optional extras for forward-compat",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "SocayoAgentConfig",
        "url": "/api/models/schema-phip2o3ju4#request"
      },
      "x-request-required": [
        "conversationKey",
        "userId"
      ],
      "required": [
        "conversationKey",
        "userId"
      ]
    },
    "pipecat_v1_common_v1_TTSConfig": {
      "type": "object",
      "description": "Cartesia Sonic-3 text-to-speech configuration for a Socayo agent.",
      "properties": {
        "voiceId": {
          "type": "string",
          "minLength": 1,
          "description": "Provider-specific voice identifier (Cartesia voice\\_id)",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "model": {
          "type": "string",
          "description": "Optional Cartesia model identifier (e.g., \"sonic-english\")",
          "x-presence": "implicit"
        },
        "sampleRate": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Optional sample rate override (Hz)",
          "x-presence": "implicit"
        },
        "volume": {
          "type": "number",
          "format": "double",
          "minimum": 0.5,
          "maximum": 2,
          "description": "Volume multiplier (0.5..2.0)",
          "x-presence": "implicit",
          "x-protovalidate": {
            "double": {
              "lte": 2,
              "gte": 0.5
            }
          },
          "x-validation-scope": "request"
        },
        "speed": {
          "type": "number",
          "format": "double",
          "minimum": 0.6,
          "maximum": 1.5,
          "description": "Speed multiplier (0.6..1.5)",
          "x-presence": "implicit",
          "x-protovalidate": {
            "double": {
              "lte": 1.5,
              "gte": 0.6
            }
          },
          "x-validation-scope": "request"
        },
        "emotion": {
          "type": "string",
          "description": "Single emotion string (e.g., \"neutral\", \"excited\")",
          "x-presence": "implicit"
        },
        "language": {
          "type": "string",
          "description": "Cartesia language code (e.g., \"EN\")",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TTSConfig",
        "url": "/api/models/schema-on2m1c27d9#request"
      },
      "x-request-required": [
        "voiceId",
        "volume",
        "speed"
      ],
      "required": [
        "voiceId",
        "volume",
        "speed"
      ]
    },
    "pipecat_v1_common_v1_HeyGenConfig": {
      "type": "object",
      "description": "HeyGen avatar/video configuration",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether this configuration is enabled.",
          "x-presence": "implicit"
        },
        "avatarId": {
          "type": "string",
          "description": "Identifier of the HeyGen avatar used for the session.",
          "x-presence": "implicit"
        },
        "version": {
          "type": "string",
          "description": "Version of the resource represented by this message.",
          "x-presence": "implicit"
        },
        "quality": {
          "type": "string",
          "description": "Video-quality setting requested for the HeyGen avatar.\n\n\"high\" | \"medium\" | \"low\"",
          "x-presence": "implicit"
        },
        "videoEncoding": {
          "type": "string",
          "description": "Video codec requested for the HeyGen avatar stream.\n\n\"H264\" | \"VP8\"",
          "x-presence": "implicit"
        },
        "voice": {
          "description": "Voice configuration used by the HeyGen avatar.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_HeyGenVoiceSettings"
            }
          ]
        },
        "knowledgeId": {
          "type": "string",
          "description": "Identifier of the HeyGen knowledge resource associated with the avatar.",
          "x-presence": "implicit"
        },
        "knowledgeBase": {
          "type": "string",
          "description": "Knowledge text supplied to the HeyGen avatar configuration.",
          "x-presence": "implicit"
        },
        "disableIdleTimeout": {
          "type": "boolean",
          "description": "Whether HeyGen’s session idle timeout is disabled.",
          "x-presence": "implicit"
        },
        "activityIdleTimeout": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "HeyGen activity idle timeout, in seconds.\n\nseconds",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "HeyGenConfig",
        "url": "/api/models/schema-pd3vbf0eel#request"
      }
    },
    "pipecat_v1_common_v1_HeyGenVoiceSettings": {
      "type": "object",
      "description": "HeyGen voice settings",
      "properties": {
        "voiceId": {
          "type": "string",
          "description": "Provider voice identifier used for speech synthesis.",
          "x-presence": "implicit"
        },
        "rate": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Speech-rate setting passed to the HeyGen voice provider.",
          "x-presence": "implicit"
        },
        "emotion": {
          "type": "string",
          "description": "Emotion setting passed to HeyGen voice synthesis.\n\n\"EXCITED\" | \"SERIOUS\" | \"FRIENDLY\" | \"SOOTHING\" | \"BROADCASTER\"",
          "x-presence": "implicit"
        },
        "elevenlabsSettings": {
          "description": "ElevenLabs synthesis settings associated with the HeyGen voice.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_HeyGenElevenLabsSettings"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "HeyGenVoiceSettings",
        "url": "/api/models/schema-p3askj7st1#request"
      }
    },
    "pipecat_v1_common_v1_HeyGenElevenLabsSettings": {
      "type": "object",
      "description": "ElevenLabs settings used within HeyGen voice configuration",
      "properties": {
        "stability": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "ElevenLabs voice-stability setting passed through HeyGen.",
          "x-presence": "implicit"
        },
        "similarityBoost": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "ElevenLabs voice-similarity setting passed through HeyGen.",
          "x-presence": "implicit"
        },
        "modelId": {
          "type": "string",
          "description": "ElevenLabs model identifier used for HeyGen voice synthesis.",
          "x-presence": "implicit"
        },
        "style": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Integer style code.",
          "x-presence": "implicit"
        },
        "useSpeakerBoost": {
          "type": "boolean",
          "description": "Whether ElevenLabs speaker boost is requested for the HeyGen voice.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "HeyGenElevenLabsSettings",
        "url": "/api/models/schema-on0k8c8den#request"
      }
    },
    "pipecat_v1_common_v1_TransportConfig": {
      "type": "object",
      "description": "Transport audio configuration",
      "properties": {
        "audioInSampleRate": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Sample rate of incoming audio, in hertz.",
          "x-presence": "implicit"
        },
        "audioOutSampleRate": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Sample rate of outgoing audio, in hertz.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TransportConfig",
        "url": "/api/models/schema-on4mqk0ok8#request"
      }
    },
    "pipecat_v1_common_v1_DailyRoomPropertiesInput": {
      "type": "object",
      "description": "Daily room configuration (subset of frequently used fields)",
      "properties": {
        "nbf": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Earliest time at which the Daily room can be joined, as Unix seconds.",
          "x-presence": "implicit"
        },
        "exp": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Expiration time of the Daily room, as Unix seconds.",
          "x-presence": "implicit"
        },
        "maxParticipants": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of participants allowed in the Daily room.",
          "x-presence": "implicit"
        },
        "enablePeopleUi": {
          "type": "boolean",
          "description": "Whether the Daily room exposes participant-list controls.",
          "x-presence": "implicit"
        },
        "enablePipUi": {
          "type": "boolean",
          "description": "Whether the Daily room enables picture-in-picture controls.",
          "x-presence": "implicit"
        },
        "enableEmojiReactions": {
          "type": "boolean",
          "description": "Whether the Daily room enables emoji reactions.",
          "x-presence": "implicit"
        },
        "enableHandRaising": {
          "type": "boolean",
          "description": "Whether the Daily room enables hand-raising controls.",
          "x-presence": "implicit"
        },
        "enablePrejoinUi": {
          "type": "boolean",
          "description": "Whether the Daily room enables its prejoin screen.",
          "x-presence": "implicit"
        },
        "enableLiveCaptionsUi": {
          "type": "boolean",
          "description": "Whether the Daily room exposes live-caption controls.",
          "x-presence": "implicit"
        },
        "enableNetworkUi": {
          "type": "boolean",
          "description": "Whether the Daily room exposes network-information controls.",
          "x-presence": "implicit"
        },
        "enableNoiseCancellationUi": {
          "type": "boolean",
          "description": "Whether the Daily room exposes noise-cancellation controls.",
          "x-presence": "implicit"
        },
        "enableBreakoutRooms": {
          "type": "boolean",
          "description": "Whether the Daily room enables breakout rooms.",
          "x-presence": "implicit"
        },
        "enableKnocking": {
          "type": "boolean",
          "description": "When true, requests Daily’s knocking feature for a private room, allowing a participant without a meeting token to ask a meeting owner for admission. It does not restrict a public room. The current room-property mapping forwards true only; false or omission does not explicitly disable a provider setting.",
          "x-presence": "implicit"
        },
        "ownerOnlyBroadcast": {
          "type": "boolean",
          "description": "Whether broadcasting is restricted to Daily room owners.",
          "x-presence": "implicit"
        },
        "enforceUniqueUserIds": {
          "type": "boolean",
          "description": "Whether the Daily room requires participant user identifiers to be unique.",
          "x-presence": "implicit"
        },
        "enableScreenshare": {
          "type": "boolean",
          "description": "Whether screen sharing is enabled in the Daily room.",
          "x-presence": "implicit"
        },
        "enableVideoProcessingUi": {
          "type": "boolean",
          "description": "Whether the Daily room exposes video-processing controls.",
          "x-presence": "implicit"
        },
        "enableChat": {
          "type": "boolean",
          "description": "Whether chat is enabled in the Daily room.",
          "x-presence": "implicit"
        },
        "enableSharedChatHistory": {
          "type": "boolean",
          "description": "Whether the Daily room enables shared chat history.",
          "x-presence": "implicit"
        },
        "enableAdvancedChat": {
          "type": "boolean",
          "description": "Whether the Daily room enables advanced chat features.",
          "x-presence": "implicit"
        },
        "enableHiddenParticipants": {
          "type": "boolean",
          "description": "Whether the Daily room allows hidden participants.",
          "x-presence": "implicit"
        },
        "startVideoOff": {
          "type": "boolean",
          "description": "Whether participants join the Daily room with video initially off.",
          "x-presence": "implicit"
        },
        "startAudioOff": {
          "type": "boolean",
          "description": "Whether participants join the Daily room with audio initially off.",
          "x-presence": "implicit"
        },
        "enableRecording": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "RECORDING_MODE_CLOUD",
                "RECORDING_MODE_LOCAL",
                "RECORDING_MODE_RAW_TRACKS",
                "RECORDING_MODE_DISABLED"
              ],
              "x-enumDescriptions": {
                "RECORDING_MODE_CLOUD": "Request the provider's cloud recording mode.\n\n\"cloud\"",
                "RECORDING_MODE_LOCAL": "Request the provider's local recording mode.\n\n\"local\"",
                "RECORDING_MODE_RAW_TRACKS": "Request separate raw media tracks for recording.\n\n\"raw-tracks\"",
                "RECORDING_MODE_DISABLED": "Explicitly disable room recording.\n\nexplicitly disabled"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "RECORDING_MODE_CLOUD",
              "number": 0,
              "canonical": true,
              "description": "Request the provider's cloud recording mode.\n\n\"cloud\""
            },
            {
              "name": "RECORDING_MODE_LOCAL",
              "number": 1,
              "canonical": true,
              "description": "Request the provider's local recording mode.\n\n\"local\""
            },
            {
              "name": "RECORDING_MODE_RAW_TRACKS",
              "number": 2,
              "canonical": true,
              "description": "Request separate raw media tracks for recording.\n\n\"raw-tracks\""
            },
            {
              "name": "RECORDING_MODE_DISABLED",
              "number": 3,
              "canonical": true,
              "description": "Explicitly disable room recording.\n\nexplicitly disabled"
            }
          ],
          "x-enum-description": "Recording mode requested when configuring a Daily room.",
          "description": "Recording mode configured for the Daily room.",
          "x-presence": "explicit"
        },
        "ejectAtRoomExp": {
          "type": "boolean",
          "description": "Whether participants are removed when the Daily room expires.",
          "x-presence": "implicit"
        },
        "ejectAfterElapsed": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Elapsed session duration after which participants are removed, in seconds.",
          "x-presence": "implicit"
        },
        "enableMeshSfu": {
          "type": "boolean",
          "description": "When true, forwards Daily’s `enable_mesh_sfu` room-topology option. Confirm provider support and its effect for your Daily account before relying on it. The current room-property mapping forwards true only; false or omission does not explicitly disable a provider setting.",
          "x-presence": "implicit"
        },
        "sfuSwitchover": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Daily topology setting controlling the switch to SFU transport.",
          "x-presence": "implicit"
        },
        "enableAdaptiveSimulcast": {
          "type": "boolean",
          "description": "Whether adaptive simulcast is enabled for the Daily room.",
          "x-presence": "implicit"
        },
        "enableMultipartyAdaptiveSimulcast": {
          "type": "boolean",
          "description": "Whether multiparty adaptive simulcast is enabled for the Daily room.",
          "x-presence": "implicit"
        },
        "experimentalOptimizeLargeCalls": {
          "type": "boolean",
          "description": "Whether Daily’s experimental large-call optimization is requested.",
          "x-presence": "implicit"
        },
        "lang": {
          "type": "string",
          "description": "Language code configured for the Daily room interface, such as en, es, or pt-BR.",
          "x-presence": "implicit"
        },
        "meetingJoinHook": {
          "type": "string",
          "description": "Webhook URL invoked by the Daily meeting-join hook.",
          "x-presence": "implicit"
        },
        "geo": {
          "type": "string",
          "description": "Region selected for the Daily room media infrastructure, such as eu-west-2.",
          "x-presence": "implicit"
        },
        "rtmpGeo": {
          "type": "string",
          "description": "Region selected for Daily RTMP streaming, such as us-west-2.",
          "x-presence": "implicit"
        },
        "disableRtmpGeoFallback": {
          "type": "boolean",
          "description": "Whether automatic RTMP region fallback is disabled.",
          "x-presence": "implicit"
        },
        "recordingsBucket": {
          "description": "Storage destination configured for Daily recordings.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_DailyRoomProperties_RecordingBucketConfigInput"
            }
          ]
        },
        "transcriptionBucket": {
          "description": "Storage destination configured for Daily transcriptions.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_DailyRoomProperties_TranscriptionBucketConfigInput"
            }
          ]
        },
        "recordingsTemplate": {
          "type": "string",
          "description": "Template used for recording object names in storage.",
          "x-presence": "implicit"
        },
        "transcriptionTemplate": {
          "type": "string",
          "description": "Template used for transcription object names in storage.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "DailyRoomProperties",
        "url": "/api/models/schema-1kp6t31pq7#request"
      }
    },
    "pipecat_v1_common_v1_DailyRoomProperties_RecordingBucketConfigInput": {
      "type": "object",
      "description": "Object-storage destination and access settings for Daily recordings.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Object-storage bucket used for Daily recordings.",
          "x-presence": "implicit"
        },
        "bucketRegion": {
          "type": "string",
          "description": "Region containing the Daily recordings bucket.",
          "x-presence": "implicit"
        },
        "assumeRoleArn": {
          "type": "string",
          "description": "Role ARN Daily uses when accessing the storage bucket.",
          "x-presence": "implicit"
        },
        "allowApiAccess": {
          "type": "boolean",
          "description": "Whether Daily API access to bucket content is enabled.",
          "x-presence": "implicit"
        },
        "allowStreamingFromBucket": {
          "type": "boolean",
          "description": "Whether streaming directly from the recording bucket is enabled.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "RecordingBucketConfig",
        "url": "/api/models/schema-1klrt9eoq8#request"
      }
    },
    "pipecat_v1_common_v1_DailyRoomProperties_TranscriptionBucketConfigInput": {
      "type": "object",
      "description": "Object-storage destination and access settings for Daily transcriptions.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Object-storage bucket used for Daily transcriptions.",
          "x-presence": "implicit"
        },
        "bucketRegion": {
          "type": "string",
          "description": "Region containing the Daily transcriptions bucket.",
          "x-presence": "implicit"
        },
        "assumeRoleArn": {
          "type": "string",
          "description": "Role ARN Daily uses when accessing the storage bucket.",
          "x-presence": "implicit"
        },
        "allowApiAccess": {
          "type": "boolean",
          "description": "Whether Daily API access to bucket content is enabled.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TranscriptionBucketConfig",
        "url": "/api/models/schema-1knm9ns9ab#request"
      }
    },
    "pipecat_v1_common_v1_DailyMeetingTokenPropertiesInput": {
      "type": "object",
      "description": "Daily meeting token configuration (subset of common fields)",
      "properties": {
        "isOwner": {
          "type": "boolean",
          "description": "Whether the issued Daily meeting token grants room-owner privileges.",
          "x-presence": "implicit"
        },
        "enableAutoRecording": {
          "type": "boolean",
          "description": "Whether the Daily meeting token requests automatic recording.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "DailyMeetingTokenProperties",
        "url": "/api/models/schema-1kic2mada4#request"
      }
    },
    "pipecat_v1_common_v1_StartSessionUserDataInput": {
      "type": "object",
      "description": "Arbitrary user data passed when starting a session, as simple key/value pairs",
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": true,
          "description": "Structured user data passed to the session-start request.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "StartSessionUserData",
        "url": "/api/models/schema-1kri473p8r#request"
      }
    },
    "llm_v1_services_gateway_v1_CreateDailySessionResponse": {
      "type": "object",
      "description": "Result of starting a Pipecat voice session for the conversation.",
      "properties": {
        "session": {
          "description": "Daily voice session connection information.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_DailySession"
            }
          ]
        }
      }
    },
    "pipecat_v1_common_v1_DailySession": {
      "type": "object",
      "description": "Session metadata for a Daily/Pipecat voice session",
      "properties": {
        "agentName": {
          "type": "string",
          "description": "Name of the Pipecat agent running this voice session.",
          "x-presence": "implicit"
        },
        "sessionId": {
          "type": "string",
          "description": "Identifier of the Pipecat voice session.",
          "x-presence": "implicit"
        },
        "dailyRoom": {
          "type": "string",
          "description": "Daily room address associated with the voice session.",
          "x-presence": "implicit"
        },
        "dailyToken": {
          "type": "string",
          "description": "Daily meeting token issued for the voice session.",
          "x-presence": "implicit"
        },
        "userData": {
          "description": "Generic body payload used to start.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_StartSessionUserData"
            }
          ]
        },
        "dailyRoomProperties": {
          "description": "Properties passed to Daily when configuring the session room.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_DailyRoomProperties"
            }
          ]
        },
        "dailyMeetingTokenProperties": {
          "description": "Properties passed to Daily when issuing the meeting token.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_DailyMeetingTokenProperties"
            }
          ]
        },
        "startedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when the operation started.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "DailySession",
        "url": "/api/models/schema-1ktuo6mcah#response"
      }
    },
    "pipecat_v1_common_v1_StartSessionUserData": {
      "type": "object",
      "description": "Arbitrary user data passed when starting a session, as simple key/value pairs",
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": true,
          "description": "Structured user data passed to the session-start request.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "StartSessionUserData",
        "url": "/api/models/schema-1kri473p8r#response"
      }
    },
    "pipecat_v1_common_v1_DailyRoomProperties": {
      "type": "object",
      "description": "Daily room configuration (subset of frequently used fields)",
      "properties": {
        "nbf": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Earliest time at which the Daily room can be joined, as Unix seconds.",
          "x-presence": "implicit"
        },
        "exp": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Expiration time of the Daily room, as Unix seconds.",
          "x-presence": "implicit"
        },
        "maxParticipants": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of participants allowed in the Daily room.",
          "x-presence": "implicit"
        },
        "enablePeopleUi": {
          "type": "boolean",
          "description": "Whether the Daily room exposes participant-list controls.",
          "x-presence": "implicit"
        },
        "enablePipUi": {
          "type": "boolean",
          "description": "Whether the Daily room enables picture-in-picture controls.",
          "x-presence": "implicit"
        },
        "enableEmojiReactions": {
          "type": "boolean",
          "description": "Whether the Daily room enables emoji reactions.",
          "x-presence": "implicit"
        },
        "enableHandRaising": {
          "type": "boolean",
          "description": "Whether the Daily room enables hand-raising controls.",
          "x-presence": "implicit"
        },
        "enablePrejoinUi": {
          "type": "boolean",
          "description": "Whether the Daily room enables its prejoin screen.",
          "x-presence": "implicit"
        },
        "enableLiveCaptionsUi": {
          "type": "boolean",
          "description": "Whether the Daily room exposes live-caption controls.",
          "x-presence": "implicit"
        },
        "enableNetworkUi": {
          "type": "boolean",
          "description": "Whether the Daily room exposes network-information controls.",
          "x-presence": "implicit"
        },
        "enableNoiseCancellationUi": {
          "type": "boolean",
          "description": "Whether the Daily room exposes noise-cancellation controls.",
          "x-presence": "implicit"
        },
        "enableBreakoutRooms": {
          "type": "boolean",
          "description": "Whether the Daily room enables breakout rooms.",
          "x-presence": "implicit"
        },
        "enableKnocking": {
          "type": "boolean",
          "description": "When true, requests Daily’s knocking feature for a private room, allowing a participant without a meeting token to ask a meeting owner for admission. It does not restrict a public room. The current room-property mapping forwards true only; false or omission does not explicitly disable a provider setting.",
          "x-presence": "implicit"
        },
        "ownerOnlyBroadcast": {
          "type": "boolean",
          "description": "Whether broadcasting is restricted to Daily room owners.",
          "x-presence": "implicit"
        },
        "enforceUniqueUserIds": {
          "type": "boolean",
          "description": "Whether the Daily room requires participant user identifiers to be unique.",
          "x-presence": "implicit"
        },
        "enableScreenshare": {
          "type": "boolean",
          "description": "Whether screen sharing is enabled in the Daily room.",
          "x-presence": "implicit"
        },
        "enableVideoProcessingUi": {
          "type": "boolean",
          "description": "Whether the Daily room exposes video-processing controls.",
          "x-presence": "implicit"
        },
        "enableChat": {
          "type": "boolean",
          "description": "Whether chat is enabled in the Daily room.",
          "x-presence": "implicit"
        },
        "enableSharedChatHistory": {
          "type": "boolean",
          "description": "Whether the Daily room enables shared chat history.",
          "x-presence": "implicit"
        },
        "enableAdvancedChat": {
          "type": "boolean",
          "description": "Whether the Daily room enables advanced chat features.",
          "x-presence": "implicit"
        },
        "enableHiddenParticipants": {
          "type": "boolean",
          "description": "Whether the Daily room allows hidden participants.",
          "x-presence": "implicit"
        },
        "startVideoOff": {
          "type": "boolean",
          "description": "Whether participants join the Daily room with video initially off.",
          "x-presence": "implicit"
        },
        "startAudioOff": {
          "type": "boolean",
          "description": "Whether participants join the Daily room with audio initially off.",
          "x-presence": "implicit"
        },
        "enableRecording": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "RECORDING_MODE_CLOUD",
                "RECORDING_MODE_LOCAL",
                "RECORDING_MODE_RAW_TRACKS",
                "RECORDING_MODE_DISABLED"
              ],
              "x-enumDescriptions": {
                "RECORDING_MODE_CLOUD": "Request the provider's cloud recording mode.\n\n\"cloud\"",
                "RECORDING_MODE_LOCAL": "Request the provider's local recording mode.\n\n\"local\"",
                "RECORDING_MODE_RAW_TRACKS": "Request separate raw media tracks for recording.\n\n\"raw-tracks\"",
                "RECORDING_MODE_DISABLED": "Explicitly disable room recording.\n\nexplicitly disabled"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "RECORDING_MODE_CLOUD",
              "number": 0,
              "canonical": true,
              "description": "Request the provider's cloud recording mode.\n\n\"cloud\""
            },
            {
              "name": "RECORDING_MODE_LOCAL",
              "number": 1,
              "canonical": true,
              "description": "Request the provider's local recording mode.\n\n\"local\""
            },
            {
              "name": "RECORDING_MODE_RAW_TRACKS",
              "number": 2,
              "canonical": true,
              "description": "Request separate raw media tracks for recording.\n\n\"raw-tracks\""
            },
            {
              "name": "RECORDING_MODE_DISABLED",
              "number": 3,
              "canonical": true,
              "description": "Explicitly disable room recording.\n\nexplicitly disabled"
            }
          ],
          "x-enum-description": "Recording mode requested when configuring a Daily room.",
          "description": "Recording mode configured for the Daily room.",
          "x-presence": "explicit"
        },
        "ejectAtRoomExp": {
          "type": "boolean",
          "description": "Whether participants are removed when the Daily room expires.",
          "x-presence": "implicit"
        },
        "ejectAfterElapsed": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Elapsed session duration after which participants are removed, in seconds.",
          "x-presence": "implicit"
        },
        "enableMeshSfu": {
          "type": "boolean",
          "description": "When true, forwards Daily’s `enable_mesh_sfu` room-topology option. Confirm provider support and its effect for your Daily account before relying on it. The current room-property mapping forwards true only; false or omission does not explicitly disable a provider setting.",
          "x-presence": "implicit"
        },
        "sfuSwitchover": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Daily topology setting controlling the switch to SFU transport.",
          "x-presence": "implicit"
        },
        "enableAdaptiveSimulcast": {
          "type": "boolean",
          "description": "Whether adaptive simulcast is enabled for the Daily room.",
          "x-presence": "implicit"
        },
        "enableMultipartyAdaptiveSimulcast": {
          "type": "boolean",
          "description": "Whether multiparty adaptive simulcast is enabled for the Daily room.",
          "x-presence": "implicit"
        },
        "experimentalOptimizeLargeCalls": {
          "type": "boolean",
          "description": "Whether Daily’s experimental large-call optimization is requested.",
          "x-presence": "implicit"
        },
        "lang": {
          "type": "string",
          "description": "Language code configured for the Daily room interface, such as en, es, or pt-BR.",
          "x-presence": "implicit"
        },
        "meetingJoinHook": {
          "type": "string",
          "description": "Webhook URL invoked by the Daily meeting-join hook.",
          "x-presence": "implicit"
        },
        "geo": {
          "type": "string",
          "description": "Region selected for the Daily room media infrastructure, such as eu-west-2.",
          "x-presence": "implicit"
        },
        "rtmpGeo": {
          "type": "string",
          "description": "Region selected for Daily RTMP streaming, such as us-west-2.",
          "x-presence": "implicit"
        },
        "disableRtmpGeoFallback": {
          "type": "boolean",
          "description": "Whether automatic RTMP region fallback is disabled.",
          "x-presence": "implicit"
        },
        "recordingsBucket": {
          "description": "Storage destination configured for Daily recordings.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_DailyRoomProperties_RecordingBucketConfig"
            }
          ]
        },
        "transcriptionBucket": {
          "description": "Storage destination configured for Daily transcriptions.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/pipecat_v1_common_v1_DailyRoomProperties_TranscriptionBucketConfig"
            }
          ]
        },
        "recordingsTemplate": {
          "type": "string",
          "description": "Template used for recording object names in storage.",
          "x-presence": "implicit"
        },
        "transcriptionTemplate": {
          "type": "string",
          "description": "Template used for transcription object names in storage.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "DailyRoomProperties",
        "url": "/api/models/schema-1kp6t31pq7#response"
      }
    },
    "pipecat_v1_common_v1_DailyRoomProperties_RecordingBucketConfig": {
      "type": "object",
      "description": "Object-storage destination and access settings for Daily recordings.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Object-storage bucket used for Daily recordings.",
          "x-presence": "implicit"
        },
        "bucketRegion": {
          "type": "string",
          "description": "Region containing the Daily recordings bucket.",
          "x-presence": "implicit"
        },
        "assumeRoleArn": {
          "type": "string",
          "description": "Role ARN Daily uses when accessing the storage bucket.",
          "x-presence": "implicit"
        },
        "allowApiAccess": {
          "type": "boolean",
          "description": "Whether Daily API access to bucket content is enabled.",
          "x-presence": "implicit"
        },
        "allowStreamingFromBucket": {
          "type": "boolean",
          "description": "Whether streaming directly from the recording bucket is enabled.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "RecordingBucketConfig",
        "url": "/api/models/schema-1klrt9eoq8#response"
      }
    },
    "pipecat_v1_common_v1_DailyRoomProperties_TranscriptionBucketConfig": {
      "type": "object",
      "description": "Object-storage destination and access settings for Daily transcriptions.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Object-storage bucket used for Daily transcriptions.",
          "x-presence": "implicit"
        },
        "bucketRegion": {
          "type": "string",
          "description": "Region containing the Daily transcriptions bucket.",
          "x-presence": "implicit"
        },
        "assumeRoleArn": {
          "type": "string",
          "description": "Role ARN Daily uses when accessing the storage bucket.",
          "x-presence": "implicit"
        },
        "allowApiAccess": {
          "type": "boolean",
          "description": "Whether Daily API access to bucket content is enabled.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TranscriptionBucketConfig",
        "url": "/api/models/schema-1knm9ns9ab#response"
      }
    },
    "pipecat_v1_common_v1_DailyMeetingTokenProperties": {
      "type": "object",
      "description": "Daily meeting token configuration (subset of common fields)",
      "properties": {
        "isOwner": {
          "type": "boolean",
          "description": "Whether the issued Daily meeting token grants room-owner privileges.",
          "x-presence": "implicit"
        },
        "enableAutoRecording": {
          "type": "boolean",
          "description": "Whether the Daily meeting token requests automatic recording.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "DailyMeetingTokenProperties",
        "url": "/api/models/schema-1kic2mada4#response"
      }
    },
    "llm_v1_services_gateway_v1_MintSttTokenRequest": {
      "type": "object",
      "description": "Mint a short-lived Cartesia STT access token for the calling user.",
      "properties": {}
    },
    "llm_v1_services_gateway_v1_MintSttTokenResponse": {
      "type": "object",
      "description": "Result of issuing a short-lived Cartesia speech-to-text access token.",
      "properties": {
        "token": {
          "type": "string",
          "description": "Short-lived Cartesia speech-to-text access token.",
          "x-presence": "implicit"
        },
        "expiresInSeconds": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Lifetime of the issued access token, in seconds.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_ListPendingApprovalsRequest": {
      "type": "object",
      "description": "Input for reading tool calls awaiting approval.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_services_gateway_v1_ListPendingApprovalsResponse": {
      "type": "object",
      "description": "Result of reading tool calls awaiting approval.",
      "properties": {
        "toolCalls": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolCall"
          },
          "description": "Tool calls waiting for a caller approval decision.",
          "x-presence": "collection"
        }
      }
    },
    "llm_v1_services_gateway_v1_SubmitToolApprovalsRequest": {
      "type": "object",
      "description": "Input for submitting decisions for tool calls awaiting approval.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "approvals": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolApproval"
          },
          "description": "Approval decisions for the identified pending tool calls.",
          "x-presence": "collection"
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_common_v1_ToolApproval": {
      "type": "object",
      "description": "Approval decision for a specific tool call",
      "properties": {
        "toolCallId": {
          "type": "string",
          "description": "Identifier of the tool call whose execution is being approved or rejected.",
          "x-presence": "implicit"
        },
        "toolName": {
          "type": "string",
          "description": "Name of the tool associated with the call or result.",
          "x-presence": "implicit"
        },
        "approved": {
          "type": "boolean",
          "description": "Whether the caller approves execution of the identified tool call.",
          "x-presence": "implicit"
        },
        "reason": {
          "type": "string",
          "description": "Optional rejection reason.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ToolApproval",
        "url": "/api/models/schema-1j7jbpfsda#request"
      }
    },
    "llm_v1_services_gateway_v1_SubmitToolApprovalsResponse": {
      "type": "object",
      "description": "Result of submitting decisions for tool calls awaiting approval. This message declares no response fields.",
      "properties": {}
    },
    "llm_v1_services_gateway_v1_SubmitClientToolResultsRequest": {
      "type": "object",
      "description": "Input for returning client-side tool execution results to the conversation.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "results": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ClientToolResult"
          },
          "description": "Execution results for tools that ran on the client.",
          "x-presence": "collection"
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_common_v1_ClientToolResult": {
      "type": "object",
      "description": "Result submitted by the caller for a client-side tool call. Both tool\\_call\\_id and tool\\_name must identify the same pending call. When submission reaches workflow validation, either missing value causes a 400 response. Copy the call's id and name into these result fields, rather than submitting the pending ToolCall unchanged.\n\nFields marked optional in the wire shape may still be required for a valid workflow submission. Both `tool_call_id` and `tool_name` must identify the same pending call; workflow validation rejects either missing value.",
      "properties": {
        "toolCallId": {
          "type": "string",
          "description": "Required call identifier, copied from the pending ToolCall.id.",
          "x-presence": "implicit"
        },
        "toolName": {
          "type": "string",
          "description": "Required tool name, copied from the pending ToolCall.name.",
          "x-presence": "implicit"
        },
        "resultJson": {
          "type": "object",
          "additionalProperties": true,
          "description": "Structured output for a matched pending call. A nonempty object records COMPLETED; an empty or omitted object records FAILED, including when the client could not complete the action.",
          "x-presence": "message"
        },
        "error": {
          "description": "Supplied error detail. The current result handler does not consume this field; the presence of a nonempty result\\_json alone determines whether the tool is recorded as completed.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_RpcErrorInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ClientToolResult",
        "url": "/api/models/schema-1i4kndhs46#request"
      }
    },
    "common_v1_RpcErrorInput": {
      "type": "object",
      "description": "Error payload containing an API-defined error code, a message and structured details. Interpret `code` using the ErrorCode enumeration published with this API; numeric equivalence with `google.rpc.Status` is not implied.",
      "properties": {
        "code": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "ERROR_CODE_CANCELLED",
                "ERROR_CODE_UNKNOWN",
                "ERROR_CODE_INVALID_ARGUMENT",
                "ERROR_CODE_DEADLINE_EXCEEDED",
                "ERROR_CODE_NOT_FOUND",
                "ERROR_CODE_ALREADY_EXISTS",
                "ERROR_CODE_PERMISSION_DENIED",
                "ERROR_CODE_RESOURCE_EXHAUSTED",
                "ERROR_CODE_FAILED_PRECONDITION",
                "ERROR_CODE_ABORTED",
                "ERROR_CODE_OUT_OF_RANGE",
                "ERROR_CODE_UNIMPLEMENTED",
                "ERROR_CODE_INTERNAL",
                "ERROR_CODE_UNAVAILABLE",
                "ERROR_CODE_DATA_LOSS",
                "ERROR_CODE_UNAUTHENTICATED",
                "ERROR_CODE_MODEL_INVALID",
                "ERROR_CODE_MODEL_UNAVAILABLE",
                "ERROR_CODE_MODERATION_FLAGGED",
                "ERROR_CODE_GENERATION_FAILED",
                "ERROR_CODE_TOOL_EXECUTION_FAILED",
                "ERROR_CODE_UPSTREAM_PROVIDER",
                "ERROR_CODE_VALIDATION_EXHAUSTED",
                "ERROR_CODE_PAYMENT_REQUIRED"
              ],
              "x-enumDescriptions": {
                "ERROR_CODE_CANCELLED": "The caller cancelled the operation before it completed.\n\nCanonical error categories.\n\n499 — Cancelled by caller",
                "ERROR_CODE_UNKNOWN": "The operation failed without a more specific error classification.\n\n500 — Unknown error",
                "ERROR_CODE_INVALID_ARGUMENT": "The request contains an invalid argument or field value.\n\n400 — Bad input, invalid field values",
                "ERROR_CODE_DEADLINE_EXCEEDED": "The operation did not complete before its deadline.\n\n504 — Operation timed out",
                "ERROR_CODE_NOT_FOUND": "The requested resource does not exist or could not be found.\n\n404 — Resource does not exist",
                "ERROR_CODE_ALREADY_EXISTS": "The requested creation conflicts with a resource that already exists.\n\n409 — Resource already exists",
                "ERROR_CODE_PERMISSION_DENIED": "The authenticated caller is not permitted to perform the operation.\n\n403 — Caller lacks permission",
                "ERROR_CODE_RESOURCE_EXHAUSTED": "A quota, rate limit or other capacity limit prevented the operation.\n\n429 — Rate limited or quota exceeded",
                "ERROR_CODE_FAILED_PRECONDITION": "The operation requires a system or resource state that is not currently satisfied.\n\n400 — System not in required state",
                "ERROR_CODE_ABORTED": "The operation was aborted, for example by a concurrent modification conflict.\n\n409 — Concurrent conflict, retry may succeed",
                "ERROR_CODE_OUT_OF_RANGE": "An argument is outside the range supported by this operation.\n\n400 — Value outside valid range",
                "ERROR_CODE_UNIMPLEMENTED": "The requested operation is not implemented.\n\n501 — Not implemented",
                "ERROR_CODE_INTERNAL": "An internal failure prevented the operation from completing.\n\n500 — Internal error",
                "ERROR_CODE_UNAVAILABLE": "The service or a required dependency is temporarily unavailable.\n\n503 — Service temporarily unavailable",
                "ERROR_CODE_DATA_LOSS": "The operation encountered unrecoverable loss or corruption of data.\n\n500 — Unrecoverable data loss",
                "ERROR_CODE_UNAUTHENTICATED": "Authentication credentials are missing or invalid.\n\n401 — Missing or invalid credentials",
                "ERROR_CODE_MODEL_INVALID": "The requested model identifier is absent from the model catalog.\n\nDomain-specific error categories.\n\n400 — Model ID not found in catalog",
                "ERROR_CODE_MODEL_UNAVAILABLE": "The model exists, but no provider is currently available to serve it.\n\n503 — Model exists but all providers are down",
                "ERROR_CODE_MODERATION_FLAGGED": "Content moderation flagged the submitted content.\n\n403 — Input flagged by content moderation",
                "ERROR_CODE_GENERATION_FAILED": "Model generation failed after its configured attempts.\n\n500 — LLM generation failed after retries",
                "ERROR_CODE_TOOL_EXECUTION_FAILED": "Execution of a requested tool failed.\n\n500 — MCP tool call failed",
                "ERROR_CODE_UPSTREAM_PROVIDER": "An upstream model provider returned an error.\n\n503 — Upstream provider returned error",
                "ERROR_CODE_VALIDATION_EXHAUSTED": "Structured-output validation still failed after the configured attempts.\n\n500 — Structured output validation failed after all retries",
                "ERROR_CODE_PAYMENT_REQUIRED": "The account lacks the credits required for the operation.\n\n402 — Insufficient credits"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "ERROR_CODE_CANCELLED",
              "number": 0,
              "canonical": true,
              "description": "The caller cancelled the operation before it completed.\n\nCanonical error categories.\n\n499 — Cancelled by caller"
            },
            {
              "name": "ERROR_CODE_UNKNOWN",
              "number": 1,
              "canonical": true,
              "description": "The operation failed without a more specific error classification.\n\n500 — Unknown error"
            },
            {
              "name": "ERROR_CODE_INVALID_ARGUMENT",
              "number": 2,
              "canonical": true,
              "description": "The request contains an invalid argument or field value.\n\n400 — Bad input, invalid field values"
            },
            {
              "name": "ERROR_CODE_DEADLINE_EXCEEDED",
              "number": 3,
              "canonical": true,
              "description": "The operation did not complete before its deadline.\n\n504 — Operation timed out"
            },
            {
              "name": "ERROR_CODE_NOT_FOUND",
              "number": 4,
              "canonical": true,
              "description": "The requested resource does not exist or could not be found.\n\n404 — Resource does not exist"
            },
            {
              "name": "ERROR_CODE_ALREADY_EXISTS",
              "number": 5,
              "canonical": true,
              "description": "The requested creation conflicts with a resource that already exists.\n\n409 — Resource already exists"
            },
            {
              "name": "ERROR_CODE_PERMISSION_DENIED",
              "number": 6,
              "canonical": true,
              "description": "The authenticated caller is not permitted to perform the operation.\n\n403 — Caller lacks permission"
            },
            {
              "name": "ERROR_CODE_RESOURCE_EXHAUSTED",
              "number": 7,
              "canonical": true,
              "description": "A quota, rate limit or other capacity limit prevented the operation.\n\n429 — Rate limited or quota exceeded"
            },
            {
              "name": "ERROR_CODE_FAILED_PRECONDITION",
              "number": 8,
              "canonical": true,
              "description": "The operation requires a system or resource state that is not currently satisfied.\n\n400 — System not in required state"
            },
            {
              "name": "ERROR_CODE_ABORTED",
              "number": 9,
              "canonical": true,
              "description": "The operation was aborted, for example by a concurrent modification conflict.\n\n409 — Concurrent conflict, retry may succeed"
            },
            {
              "name": "ERROR_CODE_OUT_OF_RANGE",
              "number": 10,
              "canonical": true,
              "description": "An argument is outside the range supported by this operation.\n\n400 — Value outside valid range"
            },
            {
              "name": "ERROR_CODE_UNIMPLEMENTED",
              "number": 11,
              "canonical": true,
              "description": "The requested operation is not implemented.\n\n501 — Not implemented"
            },
            {
              "name": "ERROR_CODE_INTERNAL",
              "number": 12,
              "canonical": true,
              "description": "An internal failure prevented the operation from completing.\n\n500 — Internal error"
            },
            {
              "name": "ERROR_CODE_UNAVAILABLE",
              "number": 13,
              "canonical": true,
              "description": "The service or a required dependency is temporarily unavailable.\n\n503 — Service temporarily unavailable"
            },
            {
              "name": "ERROR_CODE_DATA_LOSS",
              "number": 14,
              "canonical": true,
              "description": "The operation encountered unrecoverable loss or corruption of data.\n\n500 — Unrecoverable data loss"
            },
            {
              "name": "ERROR_CODE_UNAUTHENTICATED",
              "number": 15,
              "canonical": true,
              "description": "Authentication credentials are missing or invalid.\n\n401 — Missing or invalid credentials"
            },
            {
              "name": "ERROR_CODE_MODEL_INVALID",
              "number": 16,
              "canonical": true,
              "description": "The requested model identifier is absent from the model catalog.\n\nDomain-specific error categories.\n\n400 — Model ID not found in catalog"
            },
            {
              "name": "ERROR_CODE_MODEL_UNAVAILABLE",
              "number": 17,
              "canonical": true,
              "description": "The model exists, but no provider is currently available to serve it.\n\n503 — Model exists but all providers are down"
            },
            {
              "name": "ERROR_CODE_MODERATION_FLAGGED",
              "number": 18,
              "canonical": true,
              "description": "Content moderation flagged the submitted content.\n\n403 — Input flagged by content moderation"
            },
            {
              "name": "ERROR_CODE_GENERATION_FAILED",
              "number": 19,
              "canonical": true,
              "description": "Model generation failed after its configured attempts.\n\n500 — LLM generation failed after retries"
            },
            {
              "name": "ERROR_CODE_TOOL_EXECUTION_FAILED",
              "number": 20,
              "canonical": true,
              "description": "Execution of a requested tool failed.\n\n500 — MCP tool call failed"
            },
            {
              "name": "ERROR_CODE_UPSTREAM_PROVIDER",
              "number": 21,
              "canonical": true,
              "description": "An upstream model provider returned an error.\n\n503 — Upstream provider returned error"
            },
            {
              "name": "ERROR_CODE_VALIDATION_EXHAUSTED",
              "number": 22,
              "canonical": true,
              "description": "Structured-output validation still failed after the configured attempts.\n\n500 — Structured output validation failed after all retries"
            },
            {
              "name": "ERROR_CODE_PAYMENT_REQUIRED",
              "number": 23,
              "canonical": true,
              "description": "The account lacks the credits required for the operation.\n\n402 — Insufficient credits"
            }
          ],
          "x-enum-description": "API-defined categories describing why a request or operation failed. Use the published symbolic name and accompanying error details. These numeric assignments are not interchangeable with `google.rpc.Code`.",
          "description": "Machine-readable error code. Clients switch on this field.",
          "x-presence": "explicit"
        },
        "message": {
          "type": "string",
          "description": "Human-readable error description. Intended for developers, not end users. Must not be parsed programmatically — use code and details instead.",
          "x-presence": "implicit"
        },
        "isTerminal": {
          "type": "boolean",
          "description": "Whether this error is classified as terminal (non-retryable). A terminal error should not trigger automatic retries of the failed operation. A nonterminal error may reflect a transient condition that can resolve on retry.",
          "x-presence": "implicit"
        },
        "details": {
          "description": "Structured error details. At most one of each detail type.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_ErrorDetailsInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "RpcError",
        "url": "/api/models/schema-1fajlacjs0#request"
      }
    },
    "common_v1_ErrorDetailsInput": {
      "type": "object",
      "description": "Typed error details container. Concrete fields instead of Any for type safety across languages. At most one of each detail type.",
      "properties": {
        "errorInfo": {
          "description": "Identifies the error for machine consumption. Required on all errors by this error contract.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_ErrorInfoInput"
            }
          ]
        },
        "retryInfo": {
          "description": "Retry guidance for transient errors.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_RetryInfoInput"
            }
          ]
        },
        "fieldViolations": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/common_v1_FieldViolationInput"
          },
          "description": "Field-level validation failures.",
          "x-presence": "collection"
        },
        "upstreamError": {
          "description": "Upstream provider error context.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_UpstreamErrorInput"
            }
          ]
        },
        "modelError": {
          "description": "Model-specific error context.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_ModelErrorInput"
            }
          ]
        },
        "helpLinks": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/common_v1_HelpLinkInput"
          },
          "description": "Help links for error resolution.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "ErrorDetails",
        "url": "/api/models/schema-1f7d7kh0s1#request"
      }
    },
    "common_v1_ErrorInfoInput": {
      "type": "object",
      "description": "Machine-readable error identification (per AIP-193, every error must include this).",
      "properties": {
        "reason": {
          "type": "string",
          "description": "Stable machine-readable reason string (e.g., \"MODEL\\_NOT\\_FOUND\", \"RATE\\_LIMITED\", \"MODERATION\\_FLAGGED\"). Unique within the domain. Clients may switch on this field.",
          "x-presence": "implicit"
        },
        "domain": {
          "type": "string",
          "description": "Machine-readable namespace identifying the origin of the error.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Arbitrary key-value metadata. If the message field mentions a specific value (model name, field path, etc.), it MUST also appear here.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "ErrorInfo",
        "url": "/api/models/schema-1es9uii84j#request"
      }
    },
    "common_v1_RetryInfoInput": {
      "type": "object",
      "description": "Retry guidance for transient errors.",
      "properties": {
        "retryDelayMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Suggested minimum delay before retrying, in milliseconds.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "RetryInfo",
        "url": "/api/models/schema-1f439vae2d#request"
      }
    },
    "common_v1_FieldViolationInput": {
      "type": "object",
      "description": "A single field-level validation violation.",
      "properties": {
        "field": {
          "type": "string",
          "description": "Dot-separated path to the field (e.g., \"generation\\_config.model\").",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the violation.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "FieldViolation",
        "url": "/api/models/schema-1eu5noj3g1#request"
      }
    },
    "common_v1_UpstreamErrorInput": {
      "type": "object",
      "description": "Context from an upstream provider error, including the provider name when reported.",
      "properties": {
        "provider": {
          "type": "string",
          "description": "Name of the upstream provider that reported the error.",
          "x-presence": "implicit"
        },
        "statusCode": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "HTTP status code returned by the provider.",
          "x-presence": "implicit"
        },
        "rawBody": {
          "type": "string",
          "description": "Raw error body from the provider, truncated to 512 bytes.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "UpstreamError",
        "url": "/api/models/schema-1f66rlcp5a#request"
      }
    },
    "common_v1_ModelErrorInput": {
      "type": "object",
      "description": "Model-specific error context.",
      "properties": {
        "modelId": {
          "type": "string",
          "description": "The model ID that caused the error.",
          "x-presence": "implicit"
        },
        "reason": {
          "type": "string",
          "description": "Why the model failed (e.g., \"invalid\", \"unavailable\", \"moderation\\_flagged\").",
          "x-presence": "implicit"
        },
        "alternativesTried": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alternative models that were tried or could be tried.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "ModelError",
        "url": "/api/models/schema-1f2939tg20#request"
      }
    },
    "common_v1_HelpLinkInput": {
      "type": "object",
      "description": "A help link for error resolution.",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL to documentation or resolution guide.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Description of what the link provides.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "HelpLink",
        "url": "/api/models/schema-1f0qdi91b8#request"
      }
    },
    "llm_v1_services_gateway_v1_SubmitClientToolResultsResponse": {
      "type": "object",
      "description": "Result of returning client-side tool execution results to the conversation. Returned workflow information can be used to continue reconciliation through the pull API.",
      "properties": {
        "runId": {
          "type": "string",
          "description": "Identifier of the generation run, usable for retrieving its result or status after submitting client-tool results.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncRequest": {
      "type": "object",
      "description": "Input for returning client-side tool results and waiting for the next generation segment.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "results": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ClientToolResult"
          },
          "description": "Execution results for tools that ran on the client.",
          "x-presence": "collection"
        },
        "clientToolCursor": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "dispatch\\_seq this caller last observed — same semantics as AwaitGenerationRequest.client\\_tool\\_cursor. 0 on first call.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncResponse": {
      "type": "object",
      "description": "Result of returning client-side tool results and waiting for the next generation segment.",
      "properties": {
        "runId": {
          "type": "string",
          "description": "Identifier of the generation run associated with the operation.",
          "x-presence": "implicit"
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_Message"
          },
          "description": "Conversation messages returned by the generation segment.",
          "x-presence": "collection"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "AGENT_STATUS_ACTIVE",
                "AGENT_STATUS_GENERATING",
                "AGENT_STATUS_EXECUTING_TOOLS",
                "AGENT_STATUS_COMPLETED",
                "AGENT_STATUS_FAILED",
                "AGENT_STATUS_QUEUED",
                "AGENT_STATUS_AWAITING_CLIENT_TOOLS",
                "AGENT_STATUS_CANCELLED",
                "AGENT_STATUS_TIMED_OUT"
              ],
              "x-enumDescriptions": {
                "AGENT_STATUS_ACTIVE": "The run is active and has not yet reached a more specific execution phase or terminal outcome.",
                "AGENT_STATUS_GENERATING": "The run is generating a model response.",
                "AGENT_STATUS_EXECUTING_TOOLS": "The run is executing server-side tools.",
                "AGENT_STATUS_COMPLETED": "The run finished successfully.",
                "AGENT_STATUS_FAILED": "The run ended with a failure; inspect its error or end reason.",
                "AGENT_STATUS_QUEUED": "The incoming message is queued behind an ongoing run under the queue interruption policy.\n\nMessage was queued due to QUEUE interrupt policy",
                "AGENT_STATUS_AWAITING_CLIENT_TOOLS": "The run is waiting for the caller to execute client-side tools and submit their results. This is a non-terminal phase. EXECUTING\\_TOOLS instead means the server is running an MCP tool.",
                "AGENT_STATUS_CANCELLED": "The run ended because a client or its invocation cancelled it.\n\nTerminal: stopped by a client cancel or a cancelled invocation",
                "AGENT_STATUS_TIMED_OUT": "The run ended because a run-level time limit elapsed.\n\nTerminal: a run-level bound elapsed"
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "AGENT_STATUS_ACTIVE",
              "number": 0,
              "canonical": true,
              "description": "The run is active and has not yet reached a more specific execution phase or terminal outcome."
            },
            {
              "name": "AGENT_STATUS_GENERATING",
              "number": 1,
              "canonical": true,
              "description": "The run is generating a model response."
            },
            {
              "name": "AGENT_STATUS_EXECUTING_TOOLS",
              "number": 2,
              "canonical": true,
              "description": "The run is executing server-side tools."
            },
            {
              "name": "AGENT_STATUS_COMPLETED",
              "number": 3,
              "canonical": true,
              "description": "The run finished successfully."
            },
            {
              "name": "AGENT_STATUS_FAILED",
              "number": 4,
              "canonical": true,
              "description": "The run ended with a failure; inspect its error or end reason."
            },
            {
              "name": "AGENT_STATUS_QUEUED",
              "number": 5,
              "canonical": true,
              "description": "The incoming message is queued behind an ongoing run under the queue interruption policy.\n\nMessage was queued due to QUEUE interrupt policy"
            },
            {
              "name": "AGENT_STATUS_AWAITING_CLIENT_TOOLS",
              "number": 6,
              "canonical": true,
              "description": "The run is waiting for the caller to execute client-side tools and submit their results. This is a non-terminal phase. EXECUTING\\_TOOLS instead means the server is running an MCP tool."
            },
            {
              "name": "AGENT_STATUS_CANCELLED",
              "number": 7,
              "canonical": true,
              "description": "The run ended because a client or its invocation cancelled it.\n\nTerminal: stopped by a client cancel or a cancelled invocation"
            },
            {
              "name": "AGENT_STATUS_TIMED_OUT",
              "number": 8,
              "canonical": true,
              "description": "The run ended because a run-level time limit elapsed.\n\nTerminal: a run-level bound elapsed"
            }
          ],
          "x-enum-description": "Execution state of an agent generation run, separate from the reason a terminal run ended.\n\nThe terminal states are COMPLETED, FAILED, CANCELLED and TIMED\\_OUT. Treat every other or unrecognized value as non-terminal.\n\nReasons such as rejected, malformed or discarded belong in the reason field rather than in this status.",
          "description": "Generation status reported for the next segment after tool results are submitted.",
          "x-presence": "explicit"
        },
        "aggregateUsage": {
          "description": "Aggregated model usage reported for the generation run.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Usage"
            }
          ]
        },
        "pendingClientTools": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolCall"
          },
          "description": "Tool calls dispatched for execution by the client.",
          "x-presence": "collection"
        },
        "clientToolCursor": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Latest client-tool dispatch sequence represented by this response.",
          "x-presence": "implicit"
        },
        "error": {
          "description": "Structured error for partial success scenarios. Full failures propagate as TerminalError → HTTP error status + RpcError JSON body.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_RpcError"
            }
          ]
        }
      }
    },
    "llm_v1_services_gateway_v1_ListPendingClientToolsRequest": {
      "type": "object",
      "description": "Input for reading client-side tool calls awaiting execution.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "namePrefixFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "When supplied, include only pending client tools whose names match one of these prefixes.",
          "x-presence": "collection"
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_services_gateway_v1_ListPendingClientToolsResponse": {
      "type": "object",
      "description": "Result of reading client-side tool calls awaiting execution.",
      "properties": {
        "messageSequences": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64",
            "pattern": "^-?\\d+$"
          },
          "description": "Inlined fields aligned by index across the three arrays.",
          "x-presence": "collection"
        },
        "messageIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Message identifiers aligned with the returned tool calls.",
          "x-presence": "collection"
        },
        "toolCalls": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolCall"
          },
          "description": "Client-side tool calls aligned with the returned message identifiers and sequences.",
          "x-presence": "collection"
        }
      }
    },
    "llm_v1_services_gateway_v1_GetToolCallRequest": {
      "type": "object",
      "description": "Input for locating a tool call within conversation history.",
      "properties": {
        "conversationKey": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the conversation thread.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "toolCallId": {
          "type": "string",
          "description": "Identifier of the tool call to retrieve.",
          "x-presence": "implicit"
        }
      },
      "x-request-required": [
        "conversationKey"
      ],
      "required": [
        "conversationKey"
      ]
    },
    "llm_v1_services_gateway_v1_GetToolCallResponse": {
      "type": "object",
      "description": "Result of locating a tool call within conversation history.",
      "properties": {
        "messageSequence": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Sequence number of the conversation message containing the tool call.",
          "x-presence": "implicit"
        },
        "messageId": {
          "type": "string",
          "description": "Identifier of the conversation message containing the tool call.",
          "x-presence": "implicit"
        },
        "toolCall": {
          "description": "Tool call retrieved from the identified conversation message.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolCall"
            }
          ]
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPListAvailableServersRequest": {
      "type": "object",
      "description": "Inputs for listing MCP servers available through the gateway.",
      "properties": {
        "includeDisconnected": {
          "type": "boolean",
          "description": "Whether the server listing should include disconnected MCP servers.",
          "x-presence": "implicit"
        },
        "kinds": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "MCP_SERVER_KIND_INTERNAL",
                  "MCP_SERVER_KIND_BUILT_IN",
                  "MCP_SERVER_KIND_CUSTOM",
                  "MCP_SERVER_KIND_EXTERNAL",
                  "MCP_SERVER_KIND_INTEGRATION"
                ],
                "x-enumDescriptions": {
                  "MCP_SERVER_KIND_INTERNAL": "A server compiled into the deployment and dispatched in-process.\n\nCompiled into the deployment and dispatched in-process. No vendor cost.",
                  "MCP_SERVER_KIND_BUILT_IN": "A platform-owned catalog server invoked with platform-held vendor credentials.\n\nPlatform-owned catalog entry, called with a platform-held vendor key and no end-user identity. Metered per call.",
                  "MCP_SERVER_KIND_CUSTOM": "A tenant-registered server invoked with the tenant's credentials.\n\nRegistered by a tenant, called with the tenant's own credential.",
                  "MCP_SERVER_KIND_EXTERNAL": "An existing externally configured server. New entries are not supported in this category; it does not designate a new tenant registration.",
                  "MCP_SERVER_KIND_INTEGRATION": "An account-connected integration reached through Pipedream Connect.\n\nAccount-bound integration reached through Pipedream Connect."
                }
              },
              {
                "type": "integer",
                "format": "int32"
              }
            ],
            "x-enum-values": [
              {
                "name": "MCP_SERVER_KIND_INTERNAL",
                "number": 0,
                "canonical": true,
                "description": "A server compiled into the deployment and dispatched in-process.\n\nCompiled into the deployment and dispatched in-process. No vendor cost."
              },
              {
                "name": "MCP_SERVER_KIND_BUILT_IN",
                "number": 1,
                "canonical": true,
                "description": "A platform-owned catalog server invoked with platform-held vendor credentials.\n\nPlatform-owned catalog entry, called with a platform-held vendor key and no end-user identity. Metered per call."
              },
              {
                "name": "MCP_SERVER_KIND_CUSTOM",
                "number": 2,
                "canonical": true,
                "description": "A tenant-registered server invoked with the tenant's credentials.\n\nRegistered by a tenant, called with the tenant's own credential."
              },
              {
                "name": "MCP_SERVER_KIND_EXTERNAL",
                "number": 3,
                "canonical": true,
                "description": "An existing externally configured server. New entries are not supported in this category; it does not designate a new tenant registration."
              },
              {
                "name": "MCP_SERVER_KIND_INTEGRATION",
                "number": 4,
                "canonical": true,
                "description": "An account-connected integration reached through Pipedream Connect.\n\nAccount-bound integration reached through Pipedream Connect."
              }
            ],
            "x-enum-description": "Ownership and connection category of an MCP server available to the platform. INTERNAL servers use fully qualified server IDs; BUILT\\_IN IDs start with `built-in:`, CUSTOM with `custom:`, and INTEGRATION with `pipedream:`. EXTERNAL identifies existing externally configured servers with unprefixed IDs. Use this category when displaying or filtering the server catalog.",
            "description": "Ownership and connection category of an MCP server available to the platform. INTERNAL servers use fully qualified server IDs; BUILT\\_IN IDs start with `built-in:`, CUSTOM with `custom:`, and INTEGRATION with `pipedream:`. EXTERNAL identifies existing externally configured servers with unprefixed IDs. Use this category when displaying or filtering the server catalog."
          },
          "description": "Restrict the listing to these ownership classes. Empty selects every class.",
          "x-presence": "collection"
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPListAvailableServersResponse": {
      "type": "object",
      "description": "Result of listing the MCP servers available through the gateway.",
      "properties": {
        "servers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerStatus"
          },
          "description": "Connection status of each MCP server included in the listing.",
          "x-presence": "collection"
        }
      }
    },
    "llm_v1_common_v1_MCPServerStatus": {
      "type": "object",
      "description": "Status information returned for an MCP server.",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "Identifier of the MCP server whose status is reported.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name of the MCP server.",
          "x-presence": "implicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "MCP_SERVER_CONNECTION_STATUS_CONNECTED",
                "MCP_SERVER_CONNECTION_STATUS_DISCONNECTED",
                "MCP_SERVER_CONNECTION_STATUS_ERROR",
                "MCP_SERVER_CONNECTION_STATUS_DISCOVERING"
              ],
              "x-enumDescriptions": {
                "MCP_SERVER_CONNECTION_STATUS_CONNECTED": "A connection to the MCP server is established.",
                "MCP_SERVER_CONNECTION_STATUS_DISCONNECTED": "There is no active connection to the MCP server.",
                "MCP_SERVER_CONNECTION_STATUS_ERROR": "A connection or discovery attempt encountered an error.",
                "MCP_SERVER_CONNECTION_STATUS_DISCOVERING": "The platform is discovering the server's available capabilities."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "MCP_SERVER_CONNECTION_STATUS_CONNECTED",
              "number": 0,
              "canonical": true,
              "description": "A connection to the MCP server is established."
            },
            {
              "name": "MCP_SERVER_CONNECTION_STATUS_DISCONNECTED",
              "number": 1,
              "canonical": true,
              "description": "There is no active connection to the MCP server."
            },
            {
              "name": "MCP_SERVER_CONNECTION_STATUS_ERROR",
              "number": 2,
              "canonical": true,
              "description": "A connection or discovery attempt encountered an error."
            },
            {
              "name": "MCP_SERVER_CONNECTION_STATUS_DISCOVERING",
              "number": 3,
              "canonical": true,
              "description": "The platform is discovering the server's available capabilities."
            }
          ],
          "x-enum-description": "Current connection or discovery condition reported for an MCP server.",
          "description": "Current connection status reported for the MCP server.",
          "x-presence": "explicit"
        },
        "toolsDiscovered": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of tool definitions found during the last discovery.",
          "x-presence": "implicit"
        },
        "lastDiscoveryDuration": {
          "type": "string",
          "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,9})?s$",
          "description": "Elapsed duration of the last MCP tool discovery.",
          "x-presence": "message"
        },
        "lastError": {
          "type": "string",
          "description": "Most recent error reported while contacting the MCP server.",
          "x-presence": "implicit"
        },
        "lastDiscoveryTime": {
          "type": "string",
          "format": "date-time",
          "description": "Time when MCP tool discovery last ran.",
          "x-presence": "message"
        },
        "kind": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "MCP_SERVER_KIND_INTERNAL",
                "MCP_SERVER_KIND_BUILT_IN",
                "MCP_SERVER_KIND_CUSTOM",
                "MCP_SERVER_KIND_EXTERNAL",
                "MCP_SERVER_KIND_INTEGRATION"
              ],
              "x-enumDescriptions": {
                "MCP_SERVER_KIND_INTERNAL": "A server compiled into the deployment and dispatched in-process.\n\nCompiled into the deployment and dispatched in-process. No vendor cost.",
                "MCP_SERVER_KIND_BUILT_IN": "A platform-owned catalog server invoked with platform-held vendor credentials.\n\nPlatform-owned catalog entry, called with a platform-held vendor key and no end-user identity. Metered per call.",
                "MCP_SERVER_KIND_CUSTOM": "A tenant-registered server invoked with the tenant's credentials.\n\nRegistered by a tenant, called with the tenant's own credential.",
                "MCP_SERVER_KIND_EXTERNAL": "An existing externally configured server. New entries are not supported in this category; it does not designate a new tenant registration.",
                "MCP_SERVER_KIND_INTEGRATION": "An account-connected integration reached through Pipedream Connect.\n\nAccount-bound integration reached through Pipedream Connect."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "MCP_SERVER_KIND_INTERNAL",
              "number": 0,
              "canonical": true,
              "description": "A server compiled into the deployment and dispatched in-process.\n\nCompiled into the deployment and dispatched in-process. No vendor cost."
            },
            {
              "name": "MCP_SERVER_KIND_BUILT_IN",
              "number": 1,
              "canonical": true,
              "description": "A platform-owned catalog server invoked with platform-held vendor credentials.\n\nPlatform-owned catalog entry, called with a platform-held vendor key and no end-user identity. Metered per call."
            },
            {
              "name": "MCP_SERVER_KIND_CUSTOM",
              "number": 2,
              "canonical": true,
              "description": "A tenant-registered server invoked with the tenant's credentials.\n\nRegistered by a tenant, called with the tenant's own credential."
            },
            {
              "name": "MCP_SERVER_KIND_EXTERNAL",
              "number": 3,
              "canonical": true,
              "description": "An existing externally configured server. New entries are not supported in this category; it does not designate a new tenant registration."
            },
            {
              "name": "MCP_SERVER_KIND_INTEGRATION",
              "number": 4,
              "canonical": true,
              "description": "An account-connected integration reached through Pipedream Connect.\n\nAccount-bound integration reached through Pipedream Connect."
            }
          ],
          "x-enum-description": "Ownership and connection category of an MCP server available to the platform. INTERNAL servers use fully qualified server IDs; BUILT\\_IN IDs start with `built-in:`, CUSTOM with `custom:`, and INTEGRATION with `pipedream:`. EXTERNAL identifies existing externally configured servers with unprefixed IDs. Use this category when displaying or filtering the server catalog.",
          "description": "Ownership of this server. Populated by ListAvailableServers for every source it merges.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "MCPServerStatus",
        "url": "/api/models/schema-ou7clc4l5s#response"
      }
    },
    "llm_v1_services_gateway_v1_MCPGetServerInfoRequest": {
      "type": "object",
      "description": "Input for reading connection and capability information for an MCP server.",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "Identifier of the MCP server to query.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPGetServerInfoResponse": {
      "type": "object",
      "description": "Result of reading connection and capability information for an MCP server.",
      "properties": {
        "serverInfo": {
          "description": "Connection and capability information for the selected MCP server.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerInfo"
            }
          ]
        }
      }
    },
    "llm_v1_common_v1_MCPServerInfo": {
      "type": "object",
      "description": "Detailed server information",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "Identifier of the MCP server associated with the operation or tool.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Display name of the MCP server.",
          "x-presence": "implicit"
        },
        "version": {
          "type": "string",
          "description": "Version of the resource represented by this message.",
          "x-presence": "implicit"
        },
        "capabilities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Capabilities reported by the MCP server.",
          "x-presence": "collection"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional attributes associated with the resource.",
          "x-presence": "collection"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "MCP_SERVER_CONNECTION_STATUS_CONNECTED",
                "MCP_SERVER_CONNECTION_STATUS_DISCONNECTED",
                "MCP_SERVER_CONNECTION_STATUS_ERROR",
                "MCP_SERVER_CONNECTION_STATUS_DISCOVERING"
              ],
              "x-enumDescriptions": {
                "MCP_SERVER_CONNECTION_STATUS_CONNECTED": "A connection to the MCP server is established.",
                "MCP_SERVER_CONNECTION_STATUS_DISCONNECTED": "There is no active connection to the MCP server.",
                "MCP_SERVER_CONNECTION_STATUS_ERROR": "A connection or discovery attempt encountered an error.",
                "MCP_SERVER_CONNECTION_STATUS_DISCOVERING": "The platform is discovering the server's available capabilities."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "MCP_SERVER_CONNECTION_STATUS_CONNECTED",
              "number": 0,
              "canonical": true,
              "description": "A connection to the MCP server is established."
            },
            {
              "name": "MCP_SERVER_CONNECTION_STATUS_DISCONNECTED",
              "number": 1,
              "canonical": true,
              "description": "There is no active connection to the MCP server."
            },
            {
              "name": "MCP_SERVER_CONNECTION_STATUS_ERROR",
              "number": 2,
              "canonical": true,
              "description": "A connection or discovery attempt encountered an error."
            },
            {
              "name": "MCP_SERVER_CONNECTION_STATUS_DISCOVERING",
              "number": 3,
              "canonical": true,
              "description": "The platform is discovering the server's available capabilities."
            }
          ],
          "x-enum-description": "Current connection or discovery condition reported for an MCP server.",
          "description": "Current connection status reported for the MCP server.",
          "x-presence": "explicit"
        },
        "availableTools": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolDefinition"
          },
          "description": "Tool definitions currently reported by the MCP server.",
          "x-presence": "collection"
        },
        "kind": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "MCP_SERVER_KIND_INTERNAL",
                "MCP_SERVER_KIND_BUILT_IN",
                "MCP_SERVER_KIND_CUSTOM",
                "MCP_SERVER_KIND_EXTERNAL",
                "MCP_SERVER_KIND_INTEGRATION"
              ],
              "x-enumDescriptions": {
                "MCP_SERVER_KIND_INTERNAL": "A server compiled into the deployment and dispatched in-process.\n\nCompiled into the deployment and dispatched in-process. No vendor cost.",
                "MCP_SERVER_KIND_BUILT_IN": "A platform-owned catalog server invoked with platform-held vendor credentials.\n\nPlatform-owned catalog entry, called with a platform-held vendor key and no end-user identity. Metered per call.",
                "MCP_SERVER_KIND_CUSTOM": "A tenant-registered server invoked with the tenant's credentials.\n\nRegistered by a tenant, called with the tenant's own credential.",
                "MCP_SERVER_KIND_EXTERNAL": "An existing externally configured server. New entries are not supported in this category; it does not designate a new tenant registration.",
                "MCP_SERVER_KIND_INTEGRATION": "An account-connected integration reached through Pipedream Connect.\n\nAccount-bound integration reached through Pipedream Connect."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "MCP_SERVER_KIND_INTERNAL",
              "number": 0,
              "canonical": true,
              "description": "A server compiled into the deployment and dispatched in-process.\n\nCompiled into the deployment and dispatched in-process. No vendor cost."
            },
            {
              "name": "MCP_SERVER_KIND_BUILT_IN",
              "number": 1,
              "canonical": true,
              "description": "A platform-owned catalog server invoked with platform-held vendor credentials.\n\nPlatform-owned catalog entry, called with a platform-held vendor key and no end-user identity. Metered per call."
            },
            {
              "name": "MCP_SERVER_KIND_CUSTOM",
              "number": 2,
              "canonical": true,
              "description": "A tenant-registered server invoked with the tenant's credentials.\n\nRegistered by a tenant, called with the tenant's own credential."
            },
            {
              "name": "MCP_SERVER_KIND_EXTERNAL",
              "number": 3,
              "canonical": true,
              "description": "An existing externally configured server. New entries are not supported in this category; it does not designate a new tenant registration."
            },
            {
              "name": "MCP_SERVER_KIND_INTEGRATION",
              "number": 4,
              "canonical": true,
              "description": "An account-connected integration reached through Pipedream Connect.\n\nAccount-bound integration reached through Pipedream Connect."
            }
          ],
          "x-enum-description": "Ownership and connection category of an MCP server available to the platform. INTERNAL servers use fully qualified server IDs; BUILT\\_IN IDs start with `built-in:`, CUSTOM with `custom:`, and INTEGRATION with `pipedream:`. EXTERNAL identifies existing externally configured servers with unprefixed IDs. Use this category when displaying or filtering the server catalog.",
          "description": "Ownership category of the MCP server definition.",
          "x-presence": "explicit"
        }
      },
      "x-reference-model": {
        "title": "MCPServerInfo",
        "url": "/api/models/schema-1ipatl4liq#response"
      }
    },
    "llm_v1_services_gateway_v1_MCPListToolsRequest": {
      "type": "object",
      "description": "Inputs for discovering tools from selected MCP servers.",
      "properties": {
        "servers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_MCPServerReferenceInput"
          },
          "description": "MCP servers to inspect; an empty list requests tools from all available servers.",
          "x-presence": "collection"
        },
        "sessionId": {
          "type": "string",
          "description": "Optional session routing hint for the MCP operation.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPListToolsResponse": {
      "type": "object",
      "description": "Result of discovering tools exposed by MCP servers.",
      "properties": {
        "tools": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolDefinition"
          },
          "description": "Tool definitions returned by MCP discovery.",
          "x-presence": "collection"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries reported by the MCP operation.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPCallToolRequest": {
      "type": "object",
      "description": "Input for executing a tool through an MCP server.",
      "properties": {
        "toolCall": {
          "description": "Prefer ToolCall with server\\_id/name and arguments\\_json (object)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolCallInput"
            }
          ]
        },
        "requestId": {
          "type": "string",
          "description": "Correlation identifier for the MCP tool execution request.",
          "x-presence": "implicit"
        },
        "sessionId": {
          "type": "string",
          "description": "Optional session routing hint for the MCP operation.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPCallToolResponse": {
      "type": "object",
      "description": "Result of executing a tool through an MCP server.",
      "properties": {
        "requestId": {
          "type": "string",
          "description": "Correlation identifier for the MCP tool execution request.",
          "x-presence": "implicit"
        },
        "toolCall": {
          "description": "Tool call with its arguments, execution state, and available result.\n\nstatus/result\\_json/executed\\_at filled",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolCall"
            }
          ]
        },
        "executionTimeMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Reported duration of MCP tool execution, in milliseconds.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPListResourcesRequest": {
      "type": "object",
      "description": "Inputs for listing resources from the selected MCP server.",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "Identifier of the MCP server to query.",
          "x-presence": "implicit"
        },
        "uriFilter": {
          "type": "string",
          "description": "Filter applied to the URIs of discovered MCP resources.",
          "x-presence": "implicit"
        },
        "sessionId": {
          "type": "string",
          "description": "Session routing hint for the MCP operation.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPListResourcesResponse": {
      "type": "object",
      "description": "Result of discovering resources exposed by an MCP server.",
      "properties": {
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_Resource"
          },
          "description": "Resource descriptions returned by MCP discovery.",
          "x-presence": "collection"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries reported by the MCP operation.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_common_v1_Resource": {
      "type": "object",
      "description": "A resource exposed by an MCP server",
      "properties": {
        "uri": {
          "type": "string",
          "description": "Canonical URI for the resource.",
          "x-presence": "implicit"
        },
        "title": {
          "type": "string",
          "description": "Display title of the MCP resource.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Description of the content available from the MCP resource.",
          "x-presence": "implicit"
        },
        "mimeType": {
          "type": "string",
          "description": "Media type of the content exposed by the MCP resource.",
          "x-presence": "implicit"
        },
        "content": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ContentPart"
          },
          "description": "Optional embedded content.",
          "x-presence": "collection"
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional annotations/metadata.",
          "x-presence": "collection"
        },
        "lastModified": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this resource was last modified.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "Resource",
        "url": "/api/models/schema-pbf83hf239#response"
      }
    },
    "llm_v1_services_gateway_v1_MCPReadResourceRequest": {
      "type": "object",
      "description": "Input for reading an MCP resource by URI.",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "Identifier of the MCP server to query.",
          "x-presence": "implicit"
        },
        "uri": {
          "type": "string",
          "description": "URI identifying the MCP resource to read.",
          "x-presence": "implicit"
        },
        "sessionId": {
          "type": "string",
          "description": "Session routing hint for the MCP operation.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPReadResourceResponse": {
      "type": "object",
      "description": "Result of reading an MCP resource by URI.",
      "properties": {
        "resource": {
          "description": "MCP resource with content when provided by the server.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Resource"
            }
          ]
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPListPromptsRequest": {
      "type": "object",
      "description": "Inputs for listing prompts from the selected MCP server.",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "Identifier of the MCP server to query.",
          "x-presence": "implicit"
        },
        "nameFilter": {
          "type": "string",
          "description": "Filter applied to the names of discovered MCP prompts.",
          "x-presence": "implicit"
        },
        "sessionId": {
          "type": "string",
          "description": "Session routing hint for the MCP operation.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPListPromptsResponse": {
      "type": "object",
      "description": "Result of discovering prompt templates exposed by an MCP server.",
      "properties": {
        "prompts": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_PromptDefinition"
          },
          "description": "Prompt templates returned by MCP discovery.",
          "x-presence": "collection"
        },
        "totalCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of entries reported by the MCP operation.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_common_v1_PromptDefinition": {
      "type": "object",
      "description": "A prompt definition exposed by an MCP server",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name identifying the prompt template on the MCP server.",
          "x-presence": "implicit"
        },
        "title": {
          "type": "string",
          "description": "Display title of the MCP prompt template.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Description of the MCP prompt template’s purpose.",
          "x-presence": "implicit"
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_PromptParameter"
          },
          "description": "Parameter definitions accepted by the prompt template.",
          "x-presence": "collection"
        },
        "template": {
          "type": "string",
          "description": "Template string; clients may render with parameters.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PromptDefinition",
        "url": "/api/models/schema-ou94n9qv48#response"
      }
    },
    "llm_v1_common_v1_PromptParameter": {
      "type": "object",
      "description": "A parameter used by a prompt template",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name used to bind a value to this prompt-template parameter.",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Explanation of the value expected for this prompt parameter.",
          "x-presence": "implicit"
        },
        "type": {
          "type": "string",
          "description": "Free-form type hint, e.g. \"string\", \"number\"",
          "x-presence": "implicit"
        },
        "required": {
          "type": "boolean",
          "description": "Whether the prompt parameter must be supplied by the caller.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "PromptParameter",
        "url": "/api/models/schema-ohoj3j73c1#response"
      }
    },
    "llm_v1_services_gateway_v1_MCPGetPromptRequest": {
      "type": "object",
      "description": "Input for retrieving an MCP prompt template by name.",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "Identifier of the MCP server to query.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Name of the MCP prompt template to retrieve.",
          "x-presence": "implicit"
        },
        "sessionId": {
          "type": "string",
          "description": "Session routing hint for the MCP operation.",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_services_gateway_v1_MCPGetPromptResponse": {
      "type": "object",
      "description": "Result of retrieving an MCP prompt template by name.",
      "properties": {
        "prompt": {
          "description": "Prompt template returned by the MCP server.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_PromptDefinition"
            }
          ]
        }
      }
    },
    "llm_v1_services_gateway_v1_SearchMemoriesRequest": {
      "type": "object",
      "description": "Input for a semantic search of memories in the authenticated user’s tenant scope.\n\nCaller identity and scope come from authenticated context; internal identity context is not part of the supported public search request.",
      "properties": {
        "query": {
          "type": "string",
          "minLength": 1,
          "description": "Non-empty natural-language search query.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "topK": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum results requested. Supply explicitly; omission is rejected before search. The maximum is 100 because these search results are returned directly to the caller. Memory selected for a generation turn has a separate maximum of 50.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "threshold": {
          "type": "number",
          "format": "double",
          "minimum": 0,
          "maximum": 1,
          "description": "Minimum provider relevance score. Omission and zero do not request a positive cutoff. Scores are provider-specific, not probabilities that the memory is true.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "double": {
              "lte": 1,
              "gte": 0
            }
          },
          "x-validation-scope": "request"
        },
        "rerank": {
          "type": "boolean",
          "description": "Requests reranking when supported. Absence leaves the provider behavior unchanged; explicit false is forwarded as false. It does not guarantee relevance or correctness.",
          "x-presence": "explicit"
        }
      },
      "x-request-required": [
        "query",
        "topK"
      ],
      "required": [
        "query",
        "topK"
      ]
    },
    "llm_v1_services_gateway_v1_SearchMemoriesResponse": {
      "type": "object",
      "description": "Relevant memory records and any graph relationships returned by the search provider.",
      "properties": {
        "memories": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/memory_v1_Memory"
          },
          "description": "Matched memories ordered by relevance. An empty result does not prove that no memories exist.",
          "x-presence": "collection"
        },
        "relations": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/memory_v1_Relation"
          },
          "description": "Returned graph relationships; this list may be absent when there are no relationships.",
          "x-presence": "collection"
        }
      }
    },
    "memory_v1_Memory": {
      "type": "object",
      "description": "A memory is a stored statement associated with a user and, when recorded, an agent or conversation and a run or session. The `appId` field is the existing public wire name for the tenant identifier. The field name remains unchanged for compatibility.\n\n`metadata` is an object whose values are strings. A search can add a `score`; the provider determines its scale. The score does not measure factual truth. `createdAt` and `updatedAt` are RFC 3339 timestamp strings and may include fractional seconds. Absent timestamps mean that no value was returned.\n\nMemory text can be incomplete, stale or incorrect. Show the text and available timestamps to the user before acting on it. Search results are a selection by relevance, not a full account of stored memory. See the [memory cookbook](/managed-agents/memory-knowledge) for review and correction tasks.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique memory identifier.",
          "x-presence": "implicit"
        },
        "memory": {
          "type": "string",
          "description": "Stored fact text. It may be incomplete, stale or incorrect.",
          "x-presence": "implicit"
        },
        "userId": {
          "type": "string",
          "description": "User associated with the memory.",
          "x-presence": "implicit"
        },
        "agentId": {
          "type": "string",
          "description": "Agent or conversation associated with the memory.",
          "x-presence": "implicit"
        },
        "appId": {
          "type": "string",
          "description": "Tenant identifier associated with the memory.",
          "x-presence": "implicit"
        },
        "runId": {
          "type": "string",
          "description": "Associated run or session identifier.",
          "x-presence": "implicit"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional string-valued metadata attached to the memory.",
          "x-presence": "collection"
        },
        "score": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Relevance score returned by search. Its scale is provider-specific and is not a probability that the fact is correct.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Creation time as an RFC 3339 timestamp; absent when unavailable.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Last update time as an RFC 3339 timestamp; absent when unavailable.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "Memory",
        "url": "/api/models/schema-1k63a85bkp#response"
      }
    },
    "memory_v1_Relation": {
      "type": "object",
      "description": "A relation is a directed edge from `source` to `destination`, labeled by `relationship`. These are entity names and an open relationship string; no fixed relationship enumeration is enforced by this contract.\n\nRelationships may be absent even when memory records are returned. They describe extracted associations, not verified facts, ownership permissions or lifecycle transitions.",
      "properties": {
        "source": {
          "type": "string",
          "description": "Source entity name.",
          "x-presence": "implicit"
        },
        "relationship": {
          "type": "string",
          "description": "Open string describing the relationship. Example labels do not restrict the allowed values.",
          "x-presence": "implicit"
        },
        "destination": {
          "type": "string",
          "description": "Destination entity name.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Memory relation",
        "url": "/api/models/schema-1k84aa8jbi#response"
      }
    },
    "llm_v1_services_gateway_v1_ListMemoriesRequest": {
      "type": "object",
      "description": "Input for listing memory records in the caller’s scope.",
      "properties": {
        "agentId": {
          "type": "string",
          "description": "Filter by agent/conversation ID (optional)",
          "x-presence": "implicit"
        },
        "limit": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Maximum number of memories to return. Supply explicitly; omission is rejected.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "int64": {
              "lte": "100",
              "gte": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "limit"
      ],
      "required": [
        "limit"
      ]
    },
    "llm_v1_services_gateway_v1_ListMemoriesResponse": {
      "type": "object",
      "description": "Result of listing memory records in the caller’s scope.",
      "properties": {
        "memories": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/memory_v1_Memory"
          },
          "description": "List of user's memories",
          "x-presence": "collection"
        }
      }
    },
    "llm_v1_services_gateway_v1_GetMemoryRequest": {
      "type": "object",
      "description": "Input for retrieving a memory record by its identifier.",
      "properties": {
        "memoryId": {
          "type": "string",
          "minLength": 1,
          "description": "Memory ID to retrieve",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "memoryId"
      ],
      "required": [
        "memoryId"
      ]
    },
    "llm_v1_services_gateway_v1_GetMemoryResponse": {
      "type": "object",
      "description": "Result of retrieving a memory record by its identifier.",
      "properties": {
        "memory": {
          "description": "The requested memory",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/memory_v1_Memory"
            }
          ]
        }
      }
    },
    "llm_v1_services_gateway_v1_UpdateMemoryRequest": {
      "type": "object",
      "description": "Input for replacing the text of a memory record.",
      "properties": {
        "memoryId": {
          "type": "string",
          "minLength": 1,
          "description": "Memory ID to update",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "text": {
          "type": "string",
          "minLength": 1,
          "description": "New memory text content",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "memoryId",
        "text"
      ],
      "required": [
        "memoryId",
        "text"
      ]
    },
    "llm_v1_services_gateway_v1_UpdateMemoryResponse": {
      "type": "object",
      "description": "Result of replacing the text of a memory record. This message declares no response fields.",
      "properties": {}
    },
    "llm_v1_services_gateway_v1_DeleteMemoryRequest": {
      "type": "object",
      "description": "Input for deleting a memory record by its identifier.",
      "properties": {
        "memoryId": {
          "type": "string",
          "minLength": 1,
          "description": "Memory ID to delete",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        }
      },
      "x-request-required": [
        "memoryId"
      ],
      "required": [
        "memoryId"
      ]
    },
    "llm_v1_services_gateway_v1_DeleteMemoryResponse": {
      "type": "object",
      "description": "Result of deleting a memory record by its identifier.",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Whether deletion was successful",
          "x-presence": "implicit"
        }
      }
    },
    "llm_v1_common_v1_LLMGenerationCompletedEventInput": {
      "type": "object",
      "description": "Event emitted when a generation run reaches a terminal state. The event context identifies the associated conversation.",
      "properties": {
        "runId": {
          "type": "string",
          "description": "Unique identifier for the workflow run",
          "x-presence": "implicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "WORKFLOW_STATUS_RUNNING",
                "WORKFLOW_STATUS_COMPLETED",
                "WORKFLOW_STATUS_FAILED",
                "WORKFLOW_STATUS_TIMED_OUT",
                "WORKFLOW_STATUS_CANCELED"
              ],
              "x-enumDescriptions": {
                "WORKFLOW_STATUS_RUNNING": "The workflow has started and has not reached a terminal outcome.",
                "WORKFLOW_STATUS_COMPLETED": "The workflow finished successfully.",
                "WORKFLOW_STATUS_FAILED": "The workflow ended because execution failed; inspect its error or end reason.",
                "WORKFLOW_STATUS_TIMED_OUT": "The workflow ended because its execution time limit elapsed.",
                "WORKFLOW_STATUS_CANCELED": "The workflow was cancelled before normal completion. This enum retains its existing CANCELED wire spelling."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "WORKFLOW_STATUS_RUNNING",
              "number": 0,
              "canonical": true,
              "description": "The workflow has started and has not reached a terminal outcome."
            },
            {
              "name": "WORKFLOW_STATUS_COMPLETED",
              "number": 1,
              "canonical": true,
              "description": "The workflow finished successfully."
            },
            {
              "name": "WORKFLOW_STATUS_FAILED",
              "number": 2,
              "canonical": true,
              "description": "The workflow ended because execution failed; inspect its error or end reason."
            },
            {
              "name": "WORKFLOW_STATUS_TIMED_OUT",
              "number": 3,
              "canonical": true,
              "description": "The workflow ended because its execution time limit elapsed."
            },
            {
              "name": "WORKFLOW_STATUS_CANCELED",
              "number": 4,
              "canonical": true,
              "description": "The workflow was cancelled before normal completion. This enum retains its existing CANCELED wire spelling."
            }
          ],
          "x-enum-description": "Lifecycle state of a workflow execution, distinct from the reason a terminal execution ended.",
          "description": "Terminal status of the run",
          "x-presence": "explicit"
        },
        "loopCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of agent loops/steps executed",
          "x-presence": "implicit"
        },
        "durationMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "End-to-end run duration in milliseconds",
          "x-presence": "implicit"
        },
        "usage": {
          "description": "Optional usage accounting for the run",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_UsageInput"
            }
          ]
        },
        "error": {
          "description": "Structured error for FAILED/TIMED\\_OUT/CANCELED runs.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_RpcErrorInput"
            }
          ]
        },
        "usageByModel": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_UsageByModelInput"
          },
          "description": "Per-model breakdown of the same usage `usage` aggregates. Additive: `usage` stays the run-level total so existing consumers are unaffected, while billing keys its charges on model. Empty when the producer predates it.",
          "x-presence": "collection"
        },
        "turnKey": {
          "type": "string",
          "description": "Identifies the conversation turn this run served: the `message_id` of the opening user message. Messages produced by the run carry the same value as `source_user_message_id`.\n\nTo derive the corresponding evaluation trace ID, trim surrounding whitespace from the turn key and the event context's `caller_key` and `correlation_id`. Let `conv_id` be the trimmed caller key, falling back to the trimmed correlation ID when the caller key is empty. Compute SHA-256 over `\"trace|\" + conv_id + \"|msg:\" + turn_key` using the trimmed turn key and use the first 16 digest bytes, represented as 32 hexadecimal characters. The literal `msg:` is part of this derivation, not part of `turn_key`.\n\nThis identifies the trace when it has been ingested; the generation-completed event does not itself create an evaluation trace.\n\nAn empty key means no turn attribution, including turns recorded before this field was available or whose opening message could not be resolved. Do not invent a key for those turns.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "LLMGenerationCompletedEvent",
        "url": "/api/models/schema-pntuu08p80#request"
      }
    },
    "llm_v1_common_v1_UsageByModelInput": {
      "type": "object",
      "description": "Usage attributed to a single model within one generation run.\n\nLLMGenerationCompletedEvent.usage is the run-level aggregate, summed across every model the run called. A tool-using turn routinely spans several models, and the rate card prices per model, so billing needs the breakdown alongside the aggregate rather than instead of it. One entry per distinct model.",
      "properties": {
        "model": {
          "type": "string",
          "description": "Model identifier as recorded on the assistant message that produced it.",
          "x-presence": "implicit"
        },
        "calls": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Provider completions attributed to this model within the run.",
          "x-presence": "implicit"
        },
        "usage": {
          "description": "Same shape as the run aggregate, scoped to this model.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_UsageInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "UsageByModel",
        "url": "/api/models/schema-po7orad6ac#request"
      }
    },
    "llm_v1_common_v1_LLMMessagePublishedEventInput": {
      "type": "object",
      "description": "Domain event published when a new assistant/tool message is produced.",
      "properties": {
        "message": {
          "description": "The generated assistant/tool message",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_MessageInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "LLMMessagePublishedEvent",
        "url": "/api/models/schema-po1qsocerv#request"
      }
    },
    "llm_v1_common_v1_LLMGenerationStartedEventInput": {
      "type": "object",
      "description": "Event emitted when a generation run starts. The event context identifies the associated conversation.",
      "properties": {
        "runId": {
          "type": "string",
          "description": "Unique identifier for the workflow run",
          "x-presence": "implicit"
        },
        "config": {
          "description": "Optional snapshot of generation configuration used for this run",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfigInput"
            }
          ]
        },
        "startingSequence": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Conversation sequence number at the moment the run started (if known)",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "LLMGenerationStartedEvent",
        "url": "/api/models/schema-pnv14jb39g#request"
      }
    },
    "llm_v1_common_v1_ToolCallStartedEventInput": {
      "type": "object",
      "description": "Event for a tool call that has begun execution or is waiting for human approval. Check the event name and tool-call status to distinguish these cases; the event context identifies the conversation.",
      "properties": {
        "toolCall": {
          "description": "Tool-call snapshot before a result is available, including its identity, name, server and arguments. For llm.tool\\_call\\_started the status is EXECUTING; for llm.tool\\_call\\_approval\\_required it is REQUIRES\\_CONFIRMATION and requires\\_approval\\_at is the decision deadline. result\\_json is unset.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolCallInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ToolCallStartedEvent",
        "url": "/api/models/schema-po5rioe4il#request"
      }
    },
    "llm_v1_common_v1_ToolCallCompletedEventInput": {
      "type": "object",
      "description": "A tool call has one pre-terminal lifecycle notification, for execution starting or approval being required, followed by one terminal outcome. This pairing includes calls that require human approval. The terminal outcome is COMPLETED, FAILED, CANCELLED or TIMED\\_OUT.",
      "properties": {
        "toolCall": {
          "description": "Final tool call. Its terminal status is COMPLETED, FAILED, CANCELLED or TIMED\\_OUT; inspect the result and end reason for the outcome.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolCallInput"
            }
          ]
        },
        "executionTimeMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Wall-clock execution time in milliseconds (0 when unknown, e.g. dispatch error).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ToolCallCompletedEvent",
        "url": "/api/models/schema-po3pkfshjg#request"
      }
    },
    "llm_v1_common_v1_ProviderInput": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "PROVIDER_OAI",
            "PROVIDER_ANTHROPIC",
            "PROVIDER_GOOGLE",
            "PROVIDER_COHERE",
            "PROVIDER_MISTRAL"
          ],
          "x-enumDescriptions": {
            "PROVIDER_OAI": "OpenAI or an Azure OpenAI-compatible endpoint.\n\nOpenAI (incl. Azure OpenAI-compatible endpoints)",
            "PROVIDER_ANTHROPIC": "Anthropic's model API.\n\nAnthropic Claude models",
            "PROVIDER_GOOGLE": "Google's Gemini model API.\n\nGoogle (Gemini)",
            "PROVIDER_COHERE": "Cohere's model API.\n\nCohere Command models",
            "PROVIDER_MISTRAL": "Mistral's model API.\n\nMistral"
          }
        },
        {
          "type": "integer",
          "format": "int32"
        }
      ],
      "x-enum-values": [
        {
          "name": "PROVIDER_OAI",
          "number": 0,
          "canonical": true,
          "description": "OpenAI or an Azure OpenAI-compatible endpoint.\n\nOpenAI (incl. Azure OpenAI-compatible endpoints)"
        },
        {
          "name": "PROVIDER_ANTHROPIC",
          "number": 1,
          "canonical": true,
          "description": "Anthropic's model API.\n\nAnthropic Claude models"
        },
        {
          "name": "PROVIDER_GOOGLE",
          "number": 2,
          "canonical": true,
          "description": "Google's Gemini model API.\n\nGoogle (Gemini)"
        },
        {
          "name": "PROVIDER_COHERE",
          "number": 3,
          "canonical": true,
          "description": "Cohere's model API.\n\nCohere Command models"
        },
        {
          "name": "PROVIDER_MISTRAL",
          "number": 4,
          "canonical": true,
          "description": "Mistral's model API.\n\nMistral"
        }
      ],
      "x-enum-description": "Target model provider",
      "description": "Target model provider",
      "x-reference-model": {
        "title": "Provider",
        "url": "/api/models/enum-q8qp045fpk#request"
      }
    },
    "llm_v1_common_v1_Provider": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "PROVIDER_OAI",
            "PROVIDER_ANTHROPIC",
            "PROVIDER_GOOGLE",
            "PROVIDER_COHERE",
            "PROVIDER_MISTRAL"
          ],
          "x-enumDescriptions": {
            "PROVIDER_OAI": "OpenAI or an Azure OpenAI-compatible endpoint.\n\nOpenAI (incl. Azure OpenAI-compatible endpoints)",
            "PROVIDER_ANTHROPIC": "Anthropic's model API.\n\nAnthropic Claude models",
            "PROVIDER_GOOGLE": "Google's Gemini model API.\n\nGoogle (Gemini)",
            "PROVIDER_COHERE": "Cohere's model API.\n\nCohere Command models",
            "PROVIDER_MISTRAL": "Mistral's model API.\n\nMistral"
          }
        },
        {
          "type": "integer",
          "format": "int32"
        }
      ],
      "x-enum-values": [
        {
          "name": "PROVIDER_OAI",
          "number": 0,
          "canonical": true,
          "description": "OpenAI or an Azure OpenAI-compatible endpoint.\n\nOpenAI (incl. Azure OpenAI-compatible endpoints)"
        },
        {
          "name": "PROVIDER_ANTHROPIC",
          "number": 1,
          "canonical": true,
          "description": "Anthropic's model API.\n\nAnthropic Claude models"
        },
        {
          "name": "PROVIDER_GOOGLE",
          "number": 2,
          "canonical": true,
          "description": "Google's Gemini model API.\n\nGoogle (Gemini)"
        },
        {
          "name": "PROVIDER_COHERE",
          "number": 3,
          "canonical": true,
          "description": "Cohere's model API.\n\nCohere Command models"
        },
        {
          "name": "PROVIDER_MISTRAL",
          "number": 4,
          "canonical": true,
          "description": "Mistral's model API.\n\nMistral"
        }
      ],
      "x-enum-description": "Target model provider",
      "description": "Target model provider",
      "x-reference-model": {
        "title": "Provider",
        "url": "/api/models/enum-q8qp045fpk#response"
      }
    },
    "llm_v1_common_v1_ToolCategoryInput": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "TOOL_CATEGORY_SEARCH",
            "TOOL_CATEGORY_FILE_SYSTEM",
            "TOOL_CATEGORY_VERSION_CONTROL",
            "TOOL_CATEGORY_COMMUNICATION",
            "TOOL_CATEGORY_DATA_ANALYSIS",
            "TOOL_CATEGORY_WEB_BROWSING",
            "TOOL_CATEGORY_SYSTEM",
            "TOOL_CATEGORY_DEVELOPMENT",
            "TOOL_CATEGORY_UNSAFE"
          ],
          "x-enumDescriptions": {
            "TOOL_CATEGORY_SEARCH": "Search or information retrieval.\n\nSearch and information retrieval",
            "TOOL_CATEGORY_FILE_SYSTEM": "Read or modify files and directories.\n\nFile operations",
            "TOOL_CATEGORY_VERSION_CONTROL": "Operate on a source-control repository or hosting service.\n\nGit, GitHub, etc.",
            "TOOL_CATEGORY_COMMUNICATION": "Send or retrieve email or other messages.\n\nEmail, messaging, etc.",
            "TOOL_CATEGORY_DATA_ANALYSIS": "Process, query or analyze data.\n\nData processing and analysis",
            "TOOL_CATEGORY_WEB_BROWSING": "Browse or extract information from web pages.\n\nWeb scraping, browsing",
            "TOOL_CATEGORY_SYSTEM": "Operate on system resources or commands.\n\nSystem operations",
            "TOOL_CATEGORY_DEVELOPMENT": "Support software-development work.\n\nDevelopment tools",
            "TOOL_CATEGORY_UNSAFE": "A category for potentially destructive operations requiring appropriate policy controls.\n\nPotentially destructive operations"
          }
        },
        {
          "type": "integer",
          "format": "int32"
        }
      ],
      "x-enum-values": [
        {
          "name": "TOOL_CATEGORY_SEARCH",
          "number": 0,
          "canonical": true,
          "description": "Search or information retrieval.\n\nSearch and information retrieval"
        },
        {
          "name": "TOOL_CATEGORY_FILE_SYSTEM",
          "number": 1,
          "canonical": true,
          "description": "Read or modify files and directories.\n\nFile operations"
        },
        {
          "name": "TOOL_CATEGORY_VERSION_CONTROL",
          "number": 2,
          "canonical": true,
          "description": "Operate on a source-control repository or hosting service.\n\nGit, GitHub, etc."
        },
        {
          "name": "TOOL_CATEGORY_COMMUNICATION",
          "number": 3,
          "canonical": true,
          "description": "Send or retrieve email or other messages.\n\nEmail, messaging, etc."
        },
        {
          "name": "TOOL_CATEGORY_DATA_ANALYSIS",
          "number": 4,
          "canonical": true,
          "description": "Process, query or analyze data.\n\nData processing and analysis"
        },
        {
          "name": "TOOL_CATEGORY_WEB_BROWSING",
          "number": 5,
          "canonical": true,
          "description": "Browse or extract information from web pages.\n\nWeb scraping, browsing"
        },
        {
          "name": "TOOL_CATEGORY_SYSTEM",
          "number": 6,
          "canonical": true,
          "description": "Operate on system resources or commands.\n\nSystem operations"
        },
        {
          "name": "TOOL_CATEGORY_DEVELOPMENT",
          "number": 7,
          "canonical": true,
          "description": "Support software-development work.\n\nDevelopment tools"
        },
        {
          "name": "TOOL_CATEGORY_UNSAFE",
          "number": 8,
          "canonical": true,
          "description": "A category for potentially destructive operations requiring appropriate policy controls.\n\nPotentially destructive operations"
        }
      ],
      "x-enum-description": "Tool Category for organizing and filtering tools",
      "description": "Tool Category for organizing and filtering tools",
      "x-reference-model": {
        "title": "ToolCategory",
        "url": "/api/models/enum-q97i14qn23#request"
      }
    },
    "llm_v1_common_v1_ToolCategory": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "TOOL_CATEGORY_SEARCH",
            "TOOL_CATEGORY_FILE_SYSTEM",
            "TOOL_CATEGORY_VERSION_CONTROL",
            "TOOL_CATEGORY_COMMUNICATION",
            "TOOL_CATEGORY_DATA_ANALYSIS",
            "TOOL_CATEGORY_WEB_BROWSING",
            "TOOL_CATEGORY_SYSTEM",
            "TOOL_CATEGORY_DEVELOPMENT",
            "TOOL_CATEGORY_UNSAFE"
          ],
          "x-enumDescriptions": {
            "TOOL_CATEGORY_SEARCH": "Search or information retrieval.\n\nSearch and information retrieval",
            "TOOL_CATEGORY_FILE_SYSTEM": "Read or modify files and directories.\n\nFile operations",
            "TOOL_CATEGORY_VERSION_CONTROL": "Operate on a source-control repository or hosting service.\n\nGit, GitHub, etc.",
            "TOOL_CATEGORY_COMMUNICATION": "Send or retrieve email or other messages.\n\nEmail, messaging, etc.",
            "TOOL_CATEGORY_DATA_ANALYSIS": "Process, query or analyze data.\n\nData processing and analysis",
            "TOOL_CATEGORY_WEB_BROWSING": "Browse or extract information from web pages.\n\nWeb scraping, browsing",
            "TOOL_CATEGORY_SYSTEM": "Operate on system resources or commands.\n\nSystem operations",
            "TOOL_CATEGORY_DEVELOPMENT": "Support software-development work.\n\nDevelopment tools",
            "TOOL_CATEGORY_UNSAFE": "A category for potentially destructive operations requiring appropriate policy controls.\n\nPotentially destructive operations"
          }
        },
        {
          "type": "integer",
          "format": "int32"
        }
      ],
      "x-enum-values": [
        {
          "name": "TOOL_CATEGORY_SEARCH",
          "number": 0,
          "canonical": true,
          "description": "Search or information retrieval.\n\nSearch and information retrieval"
        },
        {
          "name": "TOOL_CATEGORY_FILE_SYSTEM",
          "number": 1,
          "canonical": true,
          "description": "Read or modify files and directories.\n\nFile operations"
        },
        {
          "name": "TOOL_CATEGORY_VERSION_CONTROL",
          "number": 2,
          "canonical": true,
          "description": "Operate on a source-control repository or hosting service.\n\nGit, GitHub, etc."
        },
        {
          "name": "TOOL_CATEGORY_COMMUNICATION",
          "number": 3,
          "canonical": true,
          "description": "Send or retrieve email or other messages.\n\nEmail, messaging, etc."
        },
        {
          "name": "TOOL_CATEGORY_DATA_ANALYSIS",
          "number": 4,
          "canonical": true,
          "description": "Process, query or analyze data.\n\nData processing and analysis"
        },
        {
          "name": "TOOL_CATEGORY_WEB_BROWSING",
          "number": 5,
          "canonical": true,
          "description": "Browse or extract information from web pages.\n\nWeb scraping, browsing"
        },
        {
          "name": "TOOL_CATEGORY_SYSTEM",
          "number": 6,
          "canonical": true,
          "description": "Operate on system resources or commands.\n\nSystem operations"
        },
        {
          "name": "TOOL_CATEGORY_DEVELOPMENT",
          "number": 7,
          "canonical": true,
          "description": "Support software-development work.\n\nDevelopment tools"
        },
        {
          "name": "TOOL_CATEGORY_UNSAFE",
          "number": 8,
          "canonical": true,
          "description": "A category for potentially destructive operations requiring appropriate policy controls.\n\nPotentially destructive operations"
        }
      ],
      "x-enum-description": "Tool Category for organizing and filtering tools",
      "description": "Tool Category for organizing and filtering tools",
      "x-reference-model": {
        "title": "ToolCategory",
        "url": "/api/models/enum-q97i14qn23#response"
      }
    },
    "llm_v1_common_v1_VectorMetricInput": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "VECTOR_METRIC_COSINE",
            "VECTOR_METRIC_DOT_PRODUCT",
            "VECTOR_METRIC_EUCLIDEAN"
          ],
          "x-enumDescriptions": {
            "VECTOR_METRIC_COSINE": "Compare vectors using cosine similarity.",
            "VECTOR_METRIC_DOT_PRODUCT": "Compare vectors using their dot product.",
            "VECTOR_METRIC_EUCLIDEAN": "Compare vectors using Euclidean distance."
          }
        },
        {
          "type": "integer",
          "format": "int32"
        }
      ],
      "x-enum-values": [
        {
          "name": "VECTOR_METRIC_COSINE",
          "number": 0,
          "canonical": true,
          "description": "Compare vectors using cosine similarity."
        },
        {
          "name": "VECTOR_METRIC_DOT_PRODUCT",
          "number": 1,
          "canonical": true,
          "description": "Compare vectors using their dot product."
        },
        {
          "name": "VECTOR_METRIC_EUCLIDEAN",
          "number": 2,
          "canonical": true,
          "description": "Compare vectors using Euclidean distance."
        }
      ],
      "x-enum-description": "Distance/similarity metric for vector indexes",
      "description": "Distance/similarity metric for vector indexes",
      "x-reference-model": {
        "title": "VectorMetric",
        "url": "/api/models/enum-q9e32qbsm3#request"
      }
    },
    "llm_v1_common_v1_VectorMetric": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "VECTOR_METRIC_COSINE",
            "VECTOR_METRIC_DOT_PRODUCT",
            "VECTOR_METRIC_EUCLIDEAN"
          ],
          "x-enumDescriptions": {
            "VECTOR_METRIC_COSINE": "Compare vectors using cosine similarity.",
            "VECTOR_METRIC_DOT_PRODUCT": "Compare vectors using their dot product.",
            "VECTOR_METRIC_EUCLIDEAN": "Compare vectors using Euclidean distance."
          }
        },
        {
          "type": "integer",
          "format": "int32"
        }
      ],
      "x-enum-values": [
        {
          "name": "VECTOR_METRIC_COSINE",
          "number": 0,
          "canonical": true,
          "description": "Compare vectors using cosine similarity."
        },
        {
          "name": "VECTOR_METRIC_DOT_PRODUCT",
          "number": 1,
          "canonical": true,
          "description": "Compare vectors using their dot product."
        },
        {
          "name": "VECTOR_METRIC_EUCLIDEAN",
          "number": 2,
          "canonical": true,
          "description": "Compare vectors using Euclidean distance."
        }
      ],
      "x-enum-description": "Distance/similarity metric for vector indexes",
      "description": "Distance/similarity metric for vector indexes",
      "x-reference-model": {
        "title": "VectorMetric",
        "url": "/api/models/enum-q9e32qbsm3#response"
      }
    },
    "auth_v1_common_v1_AuthorizationModelInput": {
      "type": "object",
      "description": "AuthorizationModel represents the schema/DSL defining types, relations, and rules Models define what relationships are possible in the authorization system",
      "properties": {
        "id": {
          "type": "string",
          "description": "Model ID/version identifier.",
          "x-presence": "implicit"
        },
        "schemaVersion": {
          "type": "string",
          "description": "FGA schema version (e.g., \"1.1\").",
          "x-presence": "implicit"
        },
        "typeDefinitions": {
          "type": "string",
          "description": "FGA DSL defining types and relations.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "When this model was created.",
          "x-presence": "message"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Additional metadata as key-value pairs.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "AuthorizationModel",
        "url": "/api/models/schema-pq9d837o76#request"
      }
    },
    "auth_v1_common_v1_AuthorizationModel": {
      "type": "object",
      "description": "AuthorizationModel represents the schema/DSL defining types, relations, and rules Models define what relationships are possible in the authorization system",
      "properties": {
        "id": {
          "type": "string",
          "description": "Model ID/version identifier.",
          "x-presence": "implicit"
        },
        "schemaVersion": {
          "type": "string",
          "description": "FGA schema version (e.g., \"1.1\").",
          "x-presence": "implicit"
        },
        "typeDefinitions": {
          "type": "string",
          "description": "FGA DSL defining types and relations.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "When this model was created.",
          "x-presence": "message"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Additional metadata as key-value pairs.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "AuthorizationModel",
        "url": "/api/models/schema-pq9d837o76#response"
      }
    },
    "auth_v1_common_v1_StoreInput": {
      "type": "object",
      "description": "Store represents an OpenFGA authorization store (multi-tenancy boundary) Each store maintains its own authorization models, tuples, and data",
      "properties": {
        "id": {
          "type": "string",
          "description": "Store ID (unique identifier).",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Store name/label for reference.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "When store was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Last update time.",
          "x-presence": "message"
        },
        "status": {
          "type": "string",
          "description": "Store status (active, archived, etc.).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Store",
        "url": "/api/models/schema-pqh3ei5p5l#request"
      }
    },
    "auth_v1_common_v1_Store": {
      "type": "object",
      "description": "Store represents an OpenFGA authorization store (multi-tenancy boundary) Each store maintains its own authorization models, tuples, and data",
      "properties": {
        "id": {
          "type": "string",
          "description": "Store ID (unique identifier).",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Store name/label for reference.",
          "x-presence": "implicit"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "When store was created.",
          "x-presence": "message"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Last update time.",
          "x-presence": "message"
        },
        "status": {
          "type": "string",
          "description": "Store status (active, archived, etc.).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "Store",
        "url": "/api/models/schema-pqh3ei5p5l#response"
      }
    },
    "auth_v1_common_v1_TupleKeyInput": {
      "type": "object",
      "description": "TupleKey represents a relationship tuple: user -relation-> object This is the fundamental data model in OpenFGA",
      "properties": {
        "user": {
          "type": "string",
          "description": "User identifier (e.g., \"user\\:alice\", \"team\\:engineering\").",
          "x-presence": "implicit"
        },
        "relation": {
          "type": "string",
          "description": "Relation name (e.g., \"owner\", \"editor\", \"viewer\").",
          "x-presence": "implicit"
        },
        "object": {
          "type": "string",
          "description": "Object identifier (e.g., \"document\\:doc1\").",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TupleKey",
        "url": "/api/models/schema-pqjdejpl2g#request"
      }
    },
    "auth_v1_common_v1_TupleKey": {
      "type": "object",
      "description": "TupleKey represents a relationship tuple: user -relation-> object This is the fundamental data model in OpenFGA",
      "properties": {
        "user": {
          "type": "string",
          "description": "User identifier (e.g., \"user\\:alice\", \"team\\:engineering\").",
          "x-presence": "implicit"
        },
        "relation": {
          "type": "string",
          "description": "Relation name (e.g., \"owner\", \"editor\", \"viewer\").",
          "x-presence": "implicit"
        },
        "object": {
          "type": "string",
          "description": "Object identifier (e.g., \"document\\:doc1\").",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "TupleKey",
        "url": "/api/models/schema-pqjdejpl2g#response"
      }
    },
    "auth_v1_common_v1_UserSetInput": {
      "type": "object",
      "description": "UserSet represents the expanded result of users with a specific relation to an object",
      "properties": {
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Direct user relations.",
          "x-presence": "collection"
        },
        "teams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Team/group relations.",
          "x-presence": "collection"
        },
        "computed": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Computed/derived relations through inheritance.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "UserSet",
        "url": "/api/models/schema-pql723cqr4#request"
      }
    },
    "auth_v1_common_v1_UserSet": {
      "type": "object",
      "description": "UserSet represents the expanded result of users with a specific relation to an object",
      "properties": {
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Direct user relations.",
          "x-presence": "collection"
        },
        "teams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Team/group relations.",
          "x-presence": "collection"
        },
        "computed": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Computed/derived relations through inheritance.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "UserSet",
        "url": "/api/models/schema-pql723cqr4#response"
      }
    },
    "google_protobuf_StringValueInput": {
      "type": "string",
      "nullable": true,
      "description": "Standard JSON representation of this value.",
      "x-reference-model": {
        "title": "StringValue",
        "url": "/api/models/schema-1fc03re4nc#request"
      }
    },
    "google_protobuf_StringValue": {
      "type": "string",
      "nullable": true,
      "description": "Standard JSON representation of this value.",
      "x-reference-model": {
        "title": "StringValue",
        "url": "/api/models/schema-1fc03re4nc#response"
      }
    },
    "llm_v1_actors_conversation_v1_ReceiveMessageRequestInput": {
      "type": "object",
      "description": "Receives a new message event (e.g., from the generation workflow)",
      "properties": {
        "message": {
          "description": "The message to append (assistant/tool/system)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_MessageInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ReceiveMessageRequest",
        "url": "/api/models/schema-q69v86pv94#request"
      }
    },
    "llm_v1_actors_conversation_v1_ReceiveMessageRequest": {
      "type": "object",
      "description": "Receives a new message event (e.g., from the generation workflow)",
      "properties": {
        "message": {
          "description": "The message to append (assistant/tool/system)",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Message"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ReceiveMessageRequest",
        "url": "/api/models/schema-q69v86pv94#response"
      }
    },
    "llm_v1_common_v1_ConversationBranchInput": {
      "type": "object",
      "description": "Conversation branching",
      "properties": {
        "branchId": {
          "type": "string",
          "description": "Identifier of the conversation branch.",
          "x-presence": "implicit"
        },
        "branchName": {
          "type": "string",
          "description": "Name distinguishing this alternative branch of the conversation.\n\n\"alternative\\_approach\", \"retry\\_attempt\"",
          "x-presence": "implicit"
        },
        "fromMessageId": {
          "type": "string",
          "description": "Identifier of the message from which the conversation branch diverged.",
          "x-presence": "implicit"
        },
        "messageIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Message identifiers associated with this conversation branch.",
          "x-presence": "collection"
        },
        "metadata": {
          "description": "Reason, labels, and quality metadata for this conversation branch.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_BranchMetadataInput"
            }
          ]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "isActive": {
          "type": "boolean",
          "description": "Whether this conversation branch is marked active.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ConversationBranch",
        "url": "/api/models/schema-q7hl8fcm9r#request"
      }
    },
    "llm_v1_common_v1_BranchMetadataInput": {
      "type": "object",
      "description": "Reason, labels, and quality metadata recorded for an alternative conversation branch.",
      "properties": {
        "createdReason": {
          "type": "string",
          "description": "Reason recorded when creating the alternative conversation branch.\n\n\"user\\_request\", \"error\\_recovery\", \"a\\_b\\_test\"",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Description of the conversation branch’s purpose.",
          "x-presence": "implicit"
        },
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value labels associated with the conversation branch.",
          "x-presence": "collection"
        },
        "qualityScore": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "0-1, how good this branch is.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "BranchMetadata",
        "url": "/api/models/schema-q7dt6t9g53#request"
      }
    },
    "llm_v1_common_v1_ConversationBranch": {
      "type": "object",
      "description": "Conversation branching",
      "properties": {
        "branchId": {
          "type": "string",
          "description": "Identifier of the conversation branch.",
          "x-presence": "implicit"
        },
        "branchName": {
          "type": "string",
          "description": "Name distinguishing this alternative branch of the conversation.\n\n\"alternative\\_approach\", \"retry\\_attempt\"",
          "x-presence": "implicit"
        },
        "fromMessageId": {
          "type": "string",
          "description": "Identifier of the message from which the conversation branch diverged.",
          "x-presence": "implicit"
        },
        "messageIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Message identifiers associated with this conversation branch.",
          "x-presence": "collection"
        },
        "metadata": {
          "description": "Reason, labels, and quality metadata for this conversation branch.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_BranchMetadata"
            }
          ]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was created.",
          "x-presence": "message"
        },
        "isActive": {
          "type": "boolean",
          "description": "Whether this conversation branch is marked active.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ConversationBranch",
        "url": "/api/models/schema-q7hl8fcm9r#response"
      }
    },
    "llm_v1_common_v1_BranchMetadata": {
      "type": "object",
      "description": "Reason, labels, and quality metadata recorded for an alternative conversation branch.",
      "properties": {
        "createdReason": {
          "type": "string",
          "description": "Reason recorded when creating the alternative conversation branch.\n\n\"user\\_request\", \"error\\_recovery\", \"a\\_b\\_test\"",
          "x-presence": "implicit"
        },
        "description": {
          "type": "string",
          "description": "Description of the conversation branch’s purpose.",
          "x-presence": "implicit"
        },
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value labels associated with the conversation branch.",
          "x-presence": "collection"
        },
        "qualityScore": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "0-1, how good this branch is.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "BranchMetadata",
        "url": "/api/models/schema-q7dt6t9g53#response"
      }
    },
    "llm_v1_common_v1_EmbeddingConfigInput": {
      "type": "object",
      "description": "Generic embedding configuration for embedding-assisted upserts",
      "properties": {
        "provider": {
          "type": "string",
          "description": "Provider used to generate embeddings for the input text.\n\ne.g., \"openrouter\"",
          "x-presence": "implicit"
        },
        "model": {
          "type": "string",
          "description": "Embedding model used to convert input text into vectors.\n\ne.g., \"openai/text-embedding-3-large\"",
          "x-presence": "implicit"
        },
        "options": {
          "type": "object",
          "additionalProperties": true,
          "description": "Provider-specific options.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "EmbeddingConfig",
        "url": "/api/models/schema-q81ihe4v3e#request"
      }
    },
    "llm_v1_common_v1_EmbeddingConfig": {
      "type": "object",
      "description": "Generic embedding configuration for embedding-assisted upserts",
      "properties": {
        "provider": {
          "type": "string",
          "description": "Provider used to generate embeddings for the input text.\n\ne.g., \"openrouter\"",
          "x-presence": "implicit"
        },
        "model": {
          "type": "string",
          "description": "Embedding model used to convert input text into vectors.\n\ne.g., \"openai/text-embedding-3-large\"",
          "x-presence": "implicit"
        },
        "options": {
          "type": "object",
          "additionalProperties": true,
          "description": "Provider-specific options.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "EmbeddingConfig",
        "url": "/api/models/schema-q81ihe4v3e#response"
      }
    },
    "llm_v1_common_v1_MCPServerConfigInput": {
      "type": "object",
      "description": "Full MCP server configuration used for server management.",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "Unique identifier for this MCP server.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Human-readable name (e.g., \"GitHub Copilot MCP\", \"File System Tools\").",
          "x-presence": "implicit"
        },
        "endpoint": {
          "type": "string",
          "description": "Server endpoint URL or connection string.",
          "x-presence": "implicit"
        },
        "authConfig": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Authentication configuration; for example, a token entry whose value is github\\_token.",
          "x-presence": "collection"
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this server is enabled.",
          "x-presence": "implicit"
        },
        "priority": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Default priority for tool selection (higher = preferred).",
          "x-presence": "implicit"
        },
        "discoveryTimeout": {
          "type": "string",
          "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,9})?s$",
          "description": "Timeout for tool discovery.",
          "x-presence": "message"
        },
        "serverMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional server-specific metadata.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "MCPServerConfig",
        "url": "/api/models/schema-q8egnnm4a3#request"
      }
    },
    "llm_v1_common_v1_MCPServerConfig": {
      "type": "object",
      "description": "Full MCP server configuration used for server management.",
      "properties": {
        "serverId": {
          "type": "string",
          "description": "Unique identifier for this MCP server.",
          "x-presence": "implicit"
        },
        "name": {
          "type": "string",
          "description": "Human-readable name (e.g., \"GitHub Copilot MCP\", \"File System Tools\").",
          "x-presence": "implicit"
        },
        "endpoint": {
          "type": "string",
          "description": "Server endpoint URL or connection string.",
          "x-presence": "implicit"
        },
        "authConfig": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Authentication configuration; for example, a token entry whose value is github\\_token.",
          "x-presence": "collection"
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this server is enabled.",
          "x-presence": "implicit"
        },
        "priority": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Default priority for tool selection (higher = preferred).",
          "x-presence": "implicit"
        },
        "discoveryTimeout": {
          "type": "string",
          "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,9})?s$",
          "description": "Timeout for tool discovery.",
          "x-presence": "message"
        },
        "serverMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional server-specific metadata.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "MCPServerConfig",
        "url": "/api/models/schema-q8egnnm4a3#response"
      }
    },
    "llm_v1_common_v1_ScoredVectorInput": {
      "type": "object",
      "description": "Vector match with score and optional payloads",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the vector record returned by the search.",
          "x-presence": "implicit"
        },
        "score": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Similarity score reported by the vector search provider.",
          "x-presence": "implicit"
        },
        "values": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string",
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ]
          },
          "description": "Present if include\\_values=true.",
          "x-presence": "collection"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Present if include\\_metadata=true.",
          "x-presence": "message"
        },
        "namespace": {
          "type": "string",
          "description": "Namespace used to group vector records.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ScoredVector",
        "url": "/api/models/schema-q8s584s888#request"
      }
    },
    "llm_v1_common_v1_ScoredVector": {
      "type": "object",
      "description": "Vector match with score and optional payloads",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the vector record returned by the search.",
          "x-presence": "implicit"
        },
        "score": {
          "oneOf": [
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "string",
              "enum": [
                "NaN",
                "Infinity",
                "-Infinity"
              ]
            }
          ],
          "description": "Similarity score reported by the vector search provider.",
          "x-presence": "implicit"
        },
        "values": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string",
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ]
          },
          "description": "Present if include\\_values=true.",
          "x-presence": "collection"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Present if include\\_metadata=true.",
          "x-presence": "message"
        },
        "namespace": {
          "type": "string",
          "description": "Namespace used to group vector records.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ScoredVector",
        "url": "/api/models/schema-q8s584s888#response"
      }
    },
    "llm_v1_common_v1_TextDocumentInput": {
      "type": "object",
      "description": "Text and associated metadata submitted for an embedding-assisted upsert. `id` identifies the vector record, `text` supplies the content to embed, and `metadata` carries additional attributes.",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier used to associate embedded text with its vector record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "text": {
          "type": "string",
          "minLength": 1,
          "description": "Text content supplied for the embedding or document.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Additional attributes associated with the resource.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "TextDocument",
        "url": "/api/models/schema-q92tfl8qp2#request"
      },
      "x-request-required": [
        "id",
        "text"
      ],
      "required": [
        "id",
        "text"
      ]
    },
    "llm_v1_common_v1_TextDocument": {
      "type": "object",
      "description": "Text and associated metadata submitted for an embedding-assisted upsert. `id` identifies the vector record, `text` supplies the content to embed, and `metadata` carries additional attributes.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier used to associate embedded text with its vector record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "text": {
          "type": "string",
          "description": "Text content supplied for the embedding or document.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Additional attributes associated with the resource.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "TextDocument",
        "url": "/api/models/schema-q92tfl8qp2#response"
      },
      "x-request-required": [
        "id",
        "text"
      ]
    },
    "llm_v1_common_v1_VectorInput": {
      "type": "object",
      "description": "Canonical vector record shared across vector DB services",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier used to address the vector record within its namespace.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "values": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string",
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ]
          },
          "description": "Dense vector values.",
          "x-presence": "collection"
        },
        "sparseValues": {
          "description": "Optional sparse component.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_SparseValuesInput"
            }
          ]
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Provider metadata (JSON object).",
          "x-presence": "message"
        },
        "namespace": {
          "type": "string",
          "description": "Optional namespace/bucket.",
          "x-presence": "implicit"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "Vector",
        "url": "/api/models/schema-q9cp251mpk#request"
      },
      "x-request-required": [
        "id"
      ],
      "required": [
        "id"
      ]
    },
    "llm_v1_common_v1_SparseValuesInput": {
      "type": "object",
      "description": "Optional sparse component for hybrid search",
      "properties": {
        "indices": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64",
            "pattern": "^-?\\d+$"
          },
          "description": "Positions of the nonzero components in the sparse vector.",
          "x-presence": "collection"
        },
        "values": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string",
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ]
          },
          "description": "Numeric components of the sparse vector.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "SparseValues",
        "url": "/api/models/schema-q8ublbqo12#request"
      }
    },
    "llm_v1_common_v1_Vector": {
      "type": "object",
      "description": "Canonical vector record shared across vector DB services",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier used to address the vector record within its namespace.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "values": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string",
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ]
          },
          "description": "Dense vector values.",
          "x-presence": "collection"
        },
        "sparseValues": {
          "description": "Optional sparse component.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_SparseValues"
            }
          ]
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Provider metadata (JSON object).",
          "x-presence": "message"
        },
        "namespace": {
          "type": "string",
          "description": "Optional namespace/bucket.",
          "x-presence": "implicit"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Time when this record was last updated.",
          "x-presence": "message"
        }
      },
      "x-reference-model": {
        "title": "Vector",
        "url": "/api/models/schema-q9cp251mpk#response"
      },
      "x-request-required": [
        "id"
      ]
    },
    "llm_v1_common_v1_SparseValues": {
      "type": "object",
      "description": "Optional sparse component for hybrid search",
      "properties": {
        "indices": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64",
            "pattern": "^-?\\d+$"
          },
          "description": "Positions of the nonzero components in the sparse vector.",
          "x-presence": "collection"
        },
        "values": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string",
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ]
          },
          "description": "Numeric components of the sparse vector.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "SparseValues",
        "url": "/api/models/schema-q8ublbqo12#response"
      }
    },
    "llm_v1_services_eval_v1_DatasetRunItemInput": {
      "type": "object",
      "description": "One item of a dataset run links the dataset item that was executed to the trace it produced. Keeping this pairing lets you compare the same dataset item across runs.",
      "properties": {
        "datasetItemId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the dataset item used by this evaluation run.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "traceId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the evaluation trace.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "observationId": {
          "type": "string",
          "description": "Optional: pin the run to one observation inside the trace rather than the whole turn, for a harness that scores a single generation.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "DatasetRunItem",
        "url": "/api/models/schema-qbff0c5l2f#request"
      },
      "x-request-required": [
        "datasetItemId",
        "traceId"
      ],
      "required": [
        "datasetItemId",
        "traceId"
      ]
    },
    "llm_v1_services_eval_v1_DatasetRunItem": {
      "type": "object",
      "description": "One item of a dataset run links the dataset item that was executed to the trace it produced. Keeping this pairing lets you compare the same dataset item across runs.",
      "properties": {
        "datasetItemId": {
          "type": "string",
          "description": "Identifier of the dataset item used by this evaluation run.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "traceId": {
          "type": "string",
          "description": "Identifier of the evaluation trace.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "observationId": {
          "type": "string",
          "description": "Optional: pin the run to one observation inside the trace rather than the whole turn, for a harness that scores a single generation.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "DatasetRunItem",
        "url": "/api/models/schema-qbff0c5l2f#response"
      },
      "x-request-required": [
        "datasetItemId",
        "traceId"
      ]
    },
    "llm_v1_services_eval_v1_EvalCommentSuppressionStateInput": {
      "type": "object",
      "description": "State identifying suppressed evaluation comments. Suppressed comment identifiers are filtered out of every ListComments response.\n\nSuppression does not delete the underlying comment from the evaluation provider. A platform operator may still see that comment there.",
      "properties": {
        "commentIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifiers of evaluation comments selected for suppression.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "EvalCommentSuppressionState",
        "url": "/api/models/schema-qbs1n8ja02#request"
      }
    },
    "llm_v1_services_eval_v1_EvalCommentSuppressionState": {
      "type": "object",
      "description": "State identifying suppressed evaluation comments. Suppressed comment identifiers are filtered out of every ListComments response.\n\nSuppression does not delete the underlying comment from the evaluation provider. A platform operator may still see that comment there.",
      "properties": {
        "commentIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifiers of evaluation comments selected for suppression.",
          "x-presence": "collection"
        }
      },
      "x-reference-model": {
        "title": "EvalCommentSuppressionState",
        "url": "/api/models/schema-qbs1n8ja02#response"
      }
    },
    "llm_v1_workflows_generation_v1_ClientToolDispatchInput": {
      "type": "object",
      "description": "A batch of client-tool calls awaiting execution for a conversation turn.",
      "properties": {
        "toolCalls": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolCallInput"
          },
          "description": "Tool calls emitted by the model or returned by the operation.",
          "x-presence": "collection"
        },
        "dispatchSeq": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Client-tool dispatch sequence used to wait for a later dispatch batch.",
          "x-presence": "implicit"
        },
        "assistantMessage": {
          "description": "Assistant message that armed this batch. The finish reason can be the same for a client-tool turn and an MCP turn; use the run status to distinguish them.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_MessageInput"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ClientToolDispatch",
        "url": "/api/models/schema-qj0o2cvv4e#request"
      }
    },
    "llm_v1_workflows_generation_v1_ClientToolDispatch": {
      "type": "object",
      "description": "A batch of client-tool calls awaiting execution for a conversation turn.",
      "properties": {
        "toolCalls": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_ToolCall"
          },
          "description": "Tool calls emitted by the model or returned by the operation.",
          "x-presence": "collection"
        },
        "dispatchSeq": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Client-tool dispatch sequence used to wait for a later dispatch batch.",
          "x-presence": "implicit"
        },
        "assistantMessage": {
          "description": "Assistant message that armed this batch. The finish reason can be the same for a client-tool turn and an MCP turn; use the run status to distinguish them.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Message"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ClientToolDispatch",
        "url": "/api/models/schema-qj0o2cvv4e#response"
      }
    },
    "platform_v1_services_scheduler_v1_ScheduledTriggerEnvelopeInput": {
      "type": "object",
      "description": "Declared context for a scheduled action: the schedule ID, tenant, project, beneficiary and scheduled time. These fields are intended to carry trusted context from the scheduler. Receiving support for this envelope is not currently implemented.",
      "properties": {
        "scheduleId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the scheduled job.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "tenantId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the tenant that owns or scopes this record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "description": "Identifier of the project within the tenant that scopes this record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "onBehalfOf": {
          "type": "string",
          "minLength": 1,
          "description": "Subject on whose behalf the scheduled trigger runs.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "scheduledTime": {
          "type": "string",
          "format": "date-time",
          "description": "Instant for which this execution or trigger was scheduled.",
          "x-presence": "message",
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        }
      },
      "x-reference-model": {
        "title": "ScheduledTriggerEnvelope",
        "url": "/api/models/schema-s6i1d2bv7o#request"
      },
      "x-request-required": [
        "scheduleId",
        "tenantId",
        "projectId",
        "onBehalfOf",
        "scheduledTime"
      ],
      "required": [
        "scheduleId",
        "tenantId",
        "projectId",
        "onBehalfOf",
        "scheduledTime"
      ]
    },
    "platform_v1_services_scheduler_v1_ScheduledTriggerEnvelope": {
      "type": "object",
      "description": "Declared context for a scheduled action: the schedule ID, tenant, project, beneficiary and scheduled time. These fields are intended to carry trusted context from the scheduler. Receiving support for this envelope is not currently implemented.",
      "properties": {
        "scheduleId": {
          "type": "string",
          "description": "Identifier of the scheduled job.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "tenantId": {
          "type": "string",
          "description": "Identifier of the tenant that owns or scopes this record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the project within the tenant that scopes this record.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "onBehalfOf": {
          "type": "string",
          "description": "Subject on whose behalf the scheduled trigger runs.",
          "x-presence": "implicit",
          "x-protovalidate": {
            "string": {
              "minLen": "1"
            }
          },
          "x-validation-scope": "request"
        },
        "scheduledTime": {
          "type": "string",
          "format": "date-time",
          "description": "Instant for which this execution or trigger was scheduled.",
          "x-presence": "message",
          "x-protovalidate": {
            "required": true
          },
          "x-validation-scope": "request"
        }
      },
      "x-reference-model": {
        "title": "ScheduledTriggerEnvelope",
        "url": "/api/models/schema-s6i1d2bv7o#response"
      },
      "x-request-required": [
        "scheduleId",
        "tenantId",
        "projectId",
        "onBehalfOf",
        "scheduledTime"
      ]
    },
    "llm_v1_common_v1_LLMMessagePublishedEvent": {
      "type": "object",
      "description": "Domain event published when a new assistant/tool message is produced.",
      "properties": {
        "message": {
          "description": "The generated assistant/tool message",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Message"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "LLMMessagePublishedEvent",
        "url": "/api/models/schema-po1qsocerv#response"
      }
    },
    "llm_v1_common_v1_LLMGenerationCompletedEvent": {
      "type": "object",
      "description": "Event emitted when a generation run reaches a terminal state. The event context identifies the associated conversation.",
      "properties": {
        "runId": {
          "type": "string",
          "description": "Unique identifier for the workflow run",
          "x-presence": "implicit"
        },
        "status": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "WORKFLOW_STATUS_RUNNING",
                "WORKFLOW_STATUS_COMPLETED",
                "WORKFLOW_STATUS_FAILED",
                "WORKFLOW_STATUS_TIMED_OUT",
                "WORKFLOW_STATUS_CANCELED"
              ],
              "x-enumDescriptions": {
                "WORKFLOW_STATUS_RUNNING": "The workflow has started and has not reached a terminal outcome.",
                "WORKFLOW_STATUS_COMPLETED": "The workflow finished successfully.",
                "WORKFLOW_STATUS_FAILED": "The workflow ended because execution failed; inspect its error or end reason.",
                "WORKFLOW_STATUS_TIMED_OUT": "The workflow ended because its execution time limit elapsed.",
                "WORKFLOW_STATUS_CANCELED": "The workflow was cancelled before normal completion. This enum retains its existing CANCELED wire spelling."
              }
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ],
          "x-enum-values": [
            {
              "name": "WORKFLOW_STATUS_RUNNING",
              "number": 0,
              "canonical": true,
              "description": "The workflow has started and has not reached a terminal outcome."
            },
            {
              "name": "WORKFLOW_STATUS_COMPLETED",
              "number": 1,
              "canonical": true,
              "description": "The workflow finished successfully."
            },
            {
              "name": "WORKFLOW_STATUS_FAILED",
              "number": 2,
              "canonical": true,
              "description": "The workflow ended because execution failed; inspect its error or end reason."
            },
            {
              "name": "WORKFLOW_STATUS_TIMED_OUT",
              "number": 3,
              "canonical": true,
              "description": "The workflow ended because its execution time limit elapsed."
            },
            {
              "name": "WORKFLOW_STATUS_CANCELED",
              "number": 4,
              "canonical": true,
              "description": "The workflow was cancelled before normal completion. This enum retains its existing CANCELED wire spelling."
            }
          ],
          "x-enum-description": "Lifecycle state of a workflow execution, distinct from the reason a terminal execution ended.",
          "description": "Terminal status of the run",
          "x-presence": "explicit"
        },
        "loopCount": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Number of agent loops/steps executed",
          "x-presence": "implicit"
        },
        "durationMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "End-to-end run duration in milliseconds",
          "x-presence": "implicit"
        },
        "usage": {
          "description": "Optional usage accounting for the run",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Usage"
            }
          ]
        },
        "error": {
          "description": "Structured error for FAILED/TIMED\\_OUT/CANCELED runs.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/common_v1_RpcError"
            }
          ]
        },
        "usageByModel": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/llm_v1_common_v1_UsageByModel"
          },
          "description": "Per-model breakdown of the same usage `usage` aggregates. Additive: `usage` stays the run-level total so existing consumers are unaffected, while billing keys its charges on model. Empty when the producer predates it.",
          "x-presence": "collection"
        },
        "turnKey": {
          "type": "string",
          "description": "Identifies the conversation turn this run served: the `message_id` of the opening user message. Messages produced by the run carry the same value as `source_user_message_id`.\n\nTo derive the corresponding evaluation trace ID, trim surrounding whitespace from the turn key and the event context's `caller_key` and `correlation_id`. Let `conv_id` be the trimmed caller key, falling back to the trimmed correlation ID when the caller key is empty. Compute SHA-256 over `\"trace|\" + conv_id + \"|msg:\" + turn_key` using the trimmed turn key and use the first 16 digest bytes, represented as 32 hexadecimal characters. The literal `msg:` is part of this derivation, not part of `turn_key`.\n\nThis identifies the trace when it has been ingested; the generation-completed event does not itself create an evaluation trace.\n\nAn empty key means no turn attribution, including turns recorded before this field was available or whose opening message could not be resolved. Do not invent a key for those turns.",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "LLMGenerationCompletedEvent",
        "url": "/api/models/schema-pntuu08p80#response"
      }
    },
    "llm_v1_common_v1_UsageByModel": {
      "type": "object",
      "description": "Usage attributed to a single model within one generation run.\n\nLLMGenerationCompletedEvent.usage is the run-level aggregate, summed across every model the run called. A tool-using turn routinely spans several models, and the rate card prices per model, so billing needs the breakdown alongside the aggregate rather than instead of it. One entry per distinct model.",
      "properties": {
        "model": {
          "type": "string",
          "description": "Model identifier as recorded on the assistant message that produced it.",
          "x-presence": "implicit"
        },
        "calls": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Provider completions attributed to this model within the run.",
          "x-presence": "implicit"
        },
        "usage": {
          "description": "Same shape as the run aggregate, scoped to this model.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_Usage"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "UsageByModel",
        "url": "/api/models/schema-po7orad6ac#response"
      }
    },
    "llm_v1_common_v1_LLMGenerationStartedEvent": {
      "type": "object",
      "description": "Event emitted when a generation run starts. The event context identifies the associated conversation.",
      "properties": {
        "runId": {
          "type": "string",
          "description": "Unique identifier for the workflow run",
          "x-presence": "implicit"
        },
        "config": {
          "description": "Optional snapshot of generation configuration used for this run",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_GenerationConfig"
            }
          ]
        },
        "startingSequence": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Conversation sequence number at the moment the run started (if known)",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "LLMGenerationStartedEvent",
        "url": "/api/models/schema-pnv14jb39g#response"
      }
    },
    "llm_v1_common_v1_ToolCallStartedEvent": {
      "type": "object",
      "description": "Event for a tool call that has begun execution or is waiting for human approval. Check the event name and tool-call status to distinguish these cases; the event context identifies the conversation.",
      "properties": {
        "toolCall": {
          "description": "Tool-call snapshot before a result is available, including its identity, name, server and arguments. For llm.tool\\_call\\_started the status is EXECUTING; for llm.tool\\_call\\_approval\\_required it is REQUIRES\\_CONFIRMATION and requires\\_approval\\_at is the decision deadline. result\\_json is unset.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolCall"
            }
          ]
        }
      },
      "x-reference-model": {
        "title": "ToolCallStartedEvent",
        "url": "/api/models/schema-po5rioe4il#response"
      }
    },
    "llm_v1_common_v1_ToolCallCompletedEvent": {
      "type": "object",
      "description": "A tool call has one pre-terminal lifecycle notification, for execution starting or approval being required, followed by one terminal outcome. This pairing includes calls that require human approval. The terminal outcome is COMPLETED, FAILED, CANCELLED or TIMED\\_OUT.",
      "properties": {
        "toolCall": {
          "description": "Final tool call. Its terminal status is COMPLETED, FAILED, CANCELLED or TIMED\\_OUT; inspect the result and end reason for the outcome.",
          "x-presence": "message",
          "allOf": [
            {
              "$ref": "#/components/schemas/llm_v1_common_v1_ToolCall"
            }
          ]
        },
        "executionTimeMs": {
          "type": "string",
          "format": "int64",
          "pattern": "^-?\\d+$",
          "description": "Wall-clock execution time in milliseconds (0 when unknown, e.g. dispatch error).",
          "x-presence": "implicit"
        }
      },
      "x-reference-model": {
        "title": "ToolCallCompletedEvent",
        "url": "/api/models/schema-po3pkfshjg#response"
      }
    },
    "google_protobuf_FieldMask": {
      "type": "string",
      "description": "Standard JSON representation of this value.",
      "x-reference-model": {
        "title": "FieldMask",
        "url": "/api/models/schema-oh20e1g6e1#request"
      }
    }
  },
  "models": [
    {
      "schemaName": "auth_v1_common_v1_AuthorizationModel",
      "title": "AuthorizationModel",
      "slug": "/api/models/schema-pq9d837o76",
      "description": "AuthorizationModel represents the schema/DSL defining types, relations, and rules Models define what relationships are possible in the authorization system",
      "semantics": "AuthorizationModel represents the schema/DSL defining types, relations, and rules Models define what relationships are possible in the authorization system",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "AuthorizationModel",
        "slug": "/api/models/schema-pq9d837o76"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6up6drbioc"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Model ID/version identifier.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "schemaVersion",
          "description": "FGA schema version (e.g., \"1.1\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "typeDefinitions",
          "description": "FGA DSL defining types and relations.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "When this model was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional metadata as key-value pairs.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "auth_v1_common_v1_AuthorizationModelInput",
      "title": "AuthorizationModel",
      "slug": "/api/models/schema-pq9d837o76-input",
      "description": "AuthorizationModel represents the schema/DSL defining types, relations, and rules Models define what relationships are possible in the authorization system",
      "semantics": "AuthorizationModel represents the schema/DSL defining types, relations, and rules Models define what relationships are possible in the authorization system",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "AuthorizationModel",
        "slug": "/api/models/schema-pq9d837o76"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6up6drbioc"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Model ID/version identifier.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "schemaVersion",
          "description": "FGA schema version (e.g., \"1.1\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "typeDefinitions",
          "description": "FGA DSL defining types and relations.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "When this model was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional metadata as key-value pairs.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "auth_v1_common_v1_Store",
      "title": "Store",
      "slug": "/api/models/schema-pqh3ei5p5l",
      "description": "Store represents an OpenFGA authorization store (multi-tenancy boundary) Each store maintains its own authorization models, tuples, and data",
      "semantics": "Store represents an OpenFGA authorization store (multi-tenancy boundary) Each store maintains its own authorization models, tuples, and data",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Store",
        "slug": "/api/models/schema-pqh3ei5p5l"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6urseekt57"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Store ID (unique identifier).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Store name/label for reference.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "When store was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Last update time.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Store status (active, archived, etc.).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "auth_v1_common_v1_StoreInput",
      "title": "Store",
      "slug": "/api/models/schema-pqh3ei5p5l-input",
      "description": "Store represents an OpenFGA authorization store (multi-tenancy boundary) Each store maintains its own authorization models, tuples, and data",
      "semantics": "Store represents an OpenFGA authorization store (multi-tenancy boundary) Each store maintains its own authorization models, tuples, and data",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Store",
        "slug": "/api/models/schema-pqh3ei5p5l"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6urseekt57"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Store ID (unique identifier).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Store name/label for reference.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "When store was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Last update time.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Store status (active, archived, etc.).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "auth_v1_common_v1_TupleKey",
      "title": "TupleKey",
      "slug": "/api/models/schema-pqjdejpl2g",
      "description": "TupleKey represents a relationship tuple: user -relation-> object This is the fundamental data model in OpenFGA",
      "semantics": "TupleKey represents a relationship tuple: user -relation-> object This is the fundamental data model in OpenFGA",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TupleKey",
        "slug": "/api/models/schema-pqjdejpl2g"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/62ajd5h7r5"
      ],
      "fields": [
        {
          "name": "user",
          "description": "User identifier (e.g., \"user\\:alice\", \"team\\:engineering\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "relation",
          "description": "Relation name (e.g., \"owner\", \"editor\", \"viewer\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "object",
          "description": "Object identifier (e.g., \"document\\:doc1\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "auth_v1_common_v1_TupleKeyInput",
      "title": "TupleKey",
      "slug": "/api/models/schema-pqjdejpl2g-input",
      "description": "TupleKey represents a relationship tuple: user -relation-> object This is the fundamental data model in OpenFGA",
      "semantics": "TupleKey represents a relationship tuple: user -relation-> object This is the fundamental data model in OpenFGA",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TupleKey",
        "slug": "/api/models/schema-pqjdejpl2g"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/62ajd5h7r5"
      ],
      "fields": [
        {
          "name": "user",
          "description": "User identifier (e.g., \"user\\:alice\", \"team\\:engineering\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "relation",
          "description": "Relation name (e.g., \"owner\", \"editor\", \"viewer\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "object",
          "description": "Object identifier (e.g., \"document\\:doc1\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "auth_v1_common_v1_UserSet",
      "title": "UserSet",
      "slug": "/api/models/schema-pql723cqr4",
      "description": "UserSet represents the expanded result of users with a specific relation to an object",
      "semantics": "UserSet represents the expanded result of users with a specific relation to an object",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UserSet",
        "slug": "/api/models/schema-pql723cqr4"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/62c40oktj2"
      ],
      "fields": [
        {
          "name": "users",
          "description": "Direct user relations.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "teams",
          "description": "Team/group relations.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "computed",
          "description": "Computed/derived relations through inheritance.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "auth_v1_common_v1_UserSetInput",
      "title": "UserSet",
      "slug": "/api/models/schema-pql723cqr4-input",
      "description": "UserSet represents the expanded result of users with a specific relation to an object",
      "semantics": "UserSet represents the expanded result of users with a specific relation to an object",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UserSet",
        "slug": "/api/models/schema-pql723cqr4"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/62c40oktj2"
      ],
      "fields": [
        {
          "name": "users",
          "description": "Direct user relations.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "teams",
          "description": "Team/group relations.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "computed",
          "description": "Computed/derived relations through inheritance.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "common_v1_ErrorDetails",
      "title": "ErrorDetails",
      "slug": "/api/models/schema-1f7d7kh0s1",
      "description": "Typed error details container. Concrete fields instead of Any for type safety across languages. At most one of each detail type.",
      "semantics": "Typed error details container. Concrete fields instead of Any for type safety across languages. At most one of each detail type.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ErrorDetails",
        "slug": "/api/models/schema-1f7d7kh0s1"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "errorInfo",
          "description": "Identifies the error for machine consumption. Required on all errors by this error contract.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retryInfo",
          "description": "Retry guidance for transient errors.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fieldViolations",
          "description": "Field-level validation failures.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "upstreamError",
          "description": "Upstream provider error context.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modelError",
          "description": "Model-specific error context.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "helpLinks",
          "description": "Help links for error resolution.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_ErrorDetailsInput",
      "title": "ErrorDetails",
      "slug": "/api/models/schema-1f7d7kh0s1-input",
      "description": "Typed error details container. Concrete fields instead of Any for type safety across languages. At most one of each detail type.",
      "semantics": "Typed error details container. Concrete fields instead of Any for type safety across languages. At most one of each detail type.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ErrorDetails",
        "slug": "/api/models/schema-1f7d7kh0s1"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:submitClientToolResults",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "errorInfo",
          "description": "Identifies the error for machine consumption. Required on all errors by this error contract.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retryInfo",
          "description": "Retry guidance for transient errors.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fieldViolations",
          "description": "Field-level validation failures.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "upstreamError",
          "description": "Upstream provider error context.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modelError",
          "description": "Model-specific error context.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "helpLinks",
          "description": "Help links for error resolution.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_ErrorInfo",
      "title": "ErrorInfo",
      "slug": "/api/models/schema-1es9uii84j",
      "description": "Machine-readable error identification (per AIP-193, every error must include this).",
      "semantics": "Machine-readable error identification (per AIP-193, every error must include this).",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ErrorInfo",
        "slug": "/api/models/schema-1es9uii84j"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "reason",
          "description": "Stable machine-readable reason string (e.g., \"MODEL\\_NOT\\_FOUND\", \"RATE\\_LIMITED\", \"MODERATION\\_FLAGGED\"). Unique within the domain. Clients may switch on this field.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "domain",
          "description": "Machine-readable namespace identifying the origin of the error.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Arbitrary key-value metadata. If the message field mentions a specific value (model name, field path, etc.), it MUST also appear here.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_ErrorInfoInput",
      "title": "ErrorInfo",
      "slug": "/api/models/schema-1es9uii84j-input",
      "description": "Machine-readable error identification (per AIP-193, every error must include this).",
      "semantics": "Machine-readable error identification (per AIP-193, every error must include this).",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ErrorInfo",
        "slug": "/api/models/schema-1es9uii84j"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:submitClientToolResults",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "reason",
          "description": "Stable machine-readable reason string (e.g., \"MODEL\\_NOT\\_FOUND\", \"RATE\\_LIMITED\", \"MODERATION\\_FLAGGED\"). Unique within the domain. Clients may switch on this field.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "domain",
          "description": "Machine-readable namespace identifying the origin of the error.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Arbitrary key-value metadata. If the message field mentions a specific value (model name, field path, etc.), it MUST also appear here.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_FieldViolation",
      "title": "FieldViolation",
      "slug": "/api/models/schema-1eu5noj3g1",
      "description": "A single field-level validation violation.",
      "semantics": "A single field-level validation violation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "FieldViolation",
        "slug": "/api/models/schema-1eu5noj3g1"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "field",
          "description": "Dot-separated path to the field (e.g., \"generation\\_config.model\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the violation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_FieldViolationInput",
      "title": "FieldViolation",
      "slug": "/api/models/schema-1eu5noj3g1-input",
      "description": "A single field-level validation violation.",
      "semantics": "A single field-level validation violation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "FieldViolation",
        "slug": "/api/models/schema-1eu5noj3g1"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:submitClientToolResults",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "field",
          "description": "Dot-separated path to the field (e.g., \"generation\\_config.model\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the violation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_HelpLink",
      "title": "HelpLink",
      "slug": "/api/models/schema-1f0qdi91b8",
      "description": "A help link for error resolution.",
      "semantics": "A help link for error resolution.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "HelpLink",
        "slug": "/api/models/schema-1f0qdi91b8"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "url",
          "description": "URL to documentation or resolution guide.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Description of what the link provides.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_HelpLinkInput",
      "title": "HelpLink",
      "slug": "/api/models/schema-1f0qdi91b8-input",
      "description": "A help link for error resolution.",
      "semantics": "A help link for error resolution.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "HelpLink",
        "slug": "/api/models/schema-1f0qdi91b8"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:submitClientToolResults",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "url",
          "description": "URL to documentation or resolution guide.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Description of what the link provides.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_ModelError",
      "title": "ModelError",
      "slug": "/api/models/schema-1f2939tg20",
      "description": "Model-specific error context.",
      "semantics": "Model-specific error context.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ModelError",
        "slug": "/api/models/schema-1f2939tg20"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "modelId",
          "description": "The model ID that caused the error.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "reason",
          "description": "Why the model failed (e.g., \"invalid\", \"unavailable\", \"moderation\\_flagged\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "alternativesTried",
          "description": "Alternative models that were tried or could be tried.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_ModelErrorInput",
      "title": "ModelError",
      "slug": "/api/models/schema-1f2939tg20-input",
      "description": "Model-specific error context.",
      "semantics": "Model-specific error context.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ModelError",
        "slug": "/api/models/schema-1f2939tg20"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:submitClientToolResults",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "modelId",
          "description": "The model ID that caused the error.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "reason",
          "description": "Why the model failed (e.g., \"invalid\", \"unavailable\", \"moderation\\_flagged\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "alternativesTried",
          "description": "Alternative models that were tried or could be tried.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_RetryInfo",
      "title": "RetryInfo",
      "slug": "/api/models/schema-1f439vae2d",
      "description": "Retry guidance for transient errors.",
      "semantics": "Retry guidance for transient errors.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RetryInfo",
        "slug": "/api/models/schema-1f439vae2d"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "retryDelayMs",
          "description": "Suggested minimum delay before retrying, in milliseconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_RetryInfoInput",
      "title": "RetryInfo",
      "slug": "/api/models/schema-1f439vae2d-input",
      "description": "Retry guidance for transient errors.",
      "semantics": "Retry guidance for transient errors.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RetryInfo",
        "slug": "/api/models/schema-1f439vae2d"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:submitClientToolResults",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "retryDelayMs",
          "description": "Suggested minimum delay before retrying, in milliseconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_RpcError",
      "title": "RpcError",
      "slug": "/api/models/schema-1fajlacjs0",
      "description": "Error payload containing an API-defined error code, a message and structured details. Interpret `code` using the ErrorCode enumeration published with this API; numeric equivalence with `google.rpc.Status` is not implied.",
      "semantics": "Error payload containing an API-defined error code, a message and structured details. Interpret `code` using the ErrorCode enumeration published with this API; numeric equivalence with `google.rpc.Status` is not implied.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RpcError",
        "slug": "/api/models/schema-1fajlacjs0"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "code",
          "description": "Machine-readable error code. Clients switch on this field.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "message",
          "description": "Human-readable error description. Intended for developers, not end users. Must not be parsed programmatically — use code and details instead.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isTerminal",
          "description": "Whether this error is classified as terminal (non-retryable). A terminal error should not trigger automatic retries of the failed operation. A nonterminal error may reflect a transient condition that can resolve on retry.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "details",
          "description": "Structured error details. At most one of each detail type.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_RpcErrorInput",
      "title": "RpcError",
      "slug": "/api/models/schema-1fajlacjs0-input",
      "description": "Error payload containing an API-defined error code, a message and structured details. Interpret `code` using the ErrorCode enumeration published with this API; numeric equivalence with `google.rpc.Status` is not implied.",
      "semantics": "Error payload containing an API-defined error code, a message and structured details. Interpret `code` using the ErrorCode enumeration published with this API; numeric equivalence with `google.rpc.Status` is not implied.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RpcError",
        "slug": "/api/models/schema-1fajlacjs0"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:submitClientToolResults",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "code",
          "description": "Machine-readable error code. Clients switch on this field.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "message",
          "description": "Human-readable error description. Intended for developers, not end users. Must not be parsed programmatically — use code and details instead.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isTerminal",
          "description": "Whether this error is classified as terminal (non-retryable). A terminal error should not trigger automatic retries of the failed operation. A nonterminal error may reflect a transient condition that can resolve on retry.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "details",
          "description": "Structured error details. At most one of each detail type.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_UpstreamError",
      "title": "UpstreamError",
      "slug": "/api/models/schema-1f66rlcp5a",
      "description": "Context from an upstream provider error, including the provider name when reported.",
      "semantics": "Context from an upstream provider error, including the provider name when reported.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UpstreamError",
        "slug": "/api/models/schema-1f66rlcp5a"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "provider",
          "description": "Name of the upstream provider that reported the error.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "statusCode",
          "description": "HTTP status code returned by the provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rawBody",
          "description": "Raw error body from the provider, truncated to 512 bytes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "common_v1_UpstreamErrorInput",
      "title": "UpstreamError",
      "slug": "/api/models/schema-1f66rlcp5a-input",
      "description": "Context from an upstream provider error, including the provider name when reported.",
      "semantics": "Context from an upstream provider error, including the provider name when reported.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UpstreamError",
        "slug": "/api/models/schema-1f66rlcp5a"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:submitClientToolResults",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "provider",
          "description": "Name of the upstream provider that reported the error.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "statusCode",
          "description": "HTTP status code returned by the provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rawBody",
          "description": "Raw error body from the provider, truncated to 512 bytes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "google_protobuf_Empty",
      "title": "Empty",
      "slug": "/api/models/schema-oh0n3l649v",
      "description": "An empty JSON object.",
      "semantics": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\n\nservice Foo \\{ rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }\n\nUse the published contract view for this imported type’s empty, null and text representation. An ordinary record field list alone does not define that representation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "Empty",
        "slug": "/api/models/schema-oh0n3l649v"
      },
      "operationOwners": [
        {
          "key": "notifications:updateGlobalPreference",
          "slug": "/api/notifications/update-global-preference",
          "direction": "response"
        },
        {
          "key": "notifications:updateWorkflowPreference",
          "slug": "/api/notifications/update-workflow-preference",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:updateGlobalPreference",
        "notifications:updateWorkflowPreference"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "google_protobuf_FieldMask",
      "title": "FieldMask",
      "slug": "/api/models/schema-oh20e1g6e1",
      "description": "Standard JSON representation of this value.",
      "semantics": "`FieldMask` represents a set of symbolic field paths, for example:\n\npaths: \"f.a\" paths: \"f.b.d\"\n\nHere `f` represents a field in some root message, `a` and `b` fields in the message found in `f`, and `d` a field found in the message in `f.b`.\n\nField masks are used to specify a subset of fields that should be returned by a get operation or modified by an update operation. Field masks also have a custom JSON encoding (see below).\n\n# Field Masks in Projections\n\nWhen used in the context of a projection, a response message or sub-message is filtered by the API to only contain those fields as specified in the mask. For example, if the mask in the previous example is applied to a response message as follows:\n\nf \\{ a : 22 b \\{ d : 1 x : 2 } y : 13 } z: 8\n\nThe result will not contain specific values for fields x,y and z (their value will be set to the default, and omitted in proto text output):\n\nf \\{ a : 22 b \\{ d : 1 } }\n\nA repeated field is not allowed except at the last position of a paths string.\n\nIf a FieldMask object is not present in a get operation, the operation applies to all fields (as if a FieldMask of all fields had been specified).\n\nNote that a field mask does not necessarily apply to the top-level response message. In case of a REST get operation, the field mask applies directly to the response, but in case of a REST list operation, the mask instead applies to each individual message in the returned resource list. In case of a REST custom method, other definitions may be used. Where the mask applies will be clearly documented together with its declaration in the API. In any case, the effect on the returned resource/resources is required behavior for APIs.\n\n# Field Masks in Update Operations\n\nA field mask in update operations specifies which fields of the targeted resource are going to be updated. The API is required to only change the values of the fields as specified in the mask and leave the others untouched. If a resource is passed in to describe the updated values, the API ignores the values of all fields not covered by the mask.\n\nIf a repeated field is specified for an update operation, new values will be appended to the existing repeated field in the target resource. Note that a repeated field is only allowed in the last position of a `paths` string.\n\nIf a sub-message is specified in the last position of the field mask for an update operation, then new value will be merged into the existing sub-message in the target resource.\n\nFor example, given the target message:\n\nf \\{ b \\{ d: 1 x: 2 } c: \\[1] }\n\nAnd an update message:\n\nf \\{ b \\{ d: 10 } c: \\[2] }\n\nthen if the field mask is:\n\npaths: \\[\"f.b\", \"f.c\"]\n\nthen the result will be:\n\nf \\{ b \\{ d: 10 x: 2 } c: \\[1, 2] }\n\nAn implementation may provide options to override this default behavior for repeated and message fields.\n\nIn order to reset a field's value to the default, the field must be in the mask and set to the default value in the provided resource. Hence, in order to reset all fields of a resource, provide a default instance of the resource and set all fields in the mask, or do not provide a mask as described below.\n\nIf a field mask is not present on update, the operation applies to all fields (as if a field mask of all fields has been specified). Note that in the presence of schema evolution, this may mean that fields the client does not know and has therefore not filled into the request will be reset to their default. If this is unwanted behavior, a specific service may require a client to always specify a field mask, producing an error if not.\n\nAs with get operations, the location of the resource which describes the updated values in the request message depends on the operation kind. In any case, the effect of the field mask is required to be honored by the API.\n\n## Considerations for HTTP REST\n\nThe HTTP kind of an update operation which uses a field mask must be set to PATCH instead of PUT in order to satisfy HTTP semantics (PUT must only be used for full updates).\n\n# JSON Encoding of Field Masks\n\nIn JSON, a field mask is encoded as a single string where paths are separated by a comma. Fields name in each path are converted to/from lower-camel naming conventions.\n\nAs an example, consider the following message declarations:\n\nmessage Profile \\{ User user = 1; Photo photo = 2; } message User \\{ string display\\_name = 1; string address = 2; }\n\nIn proto a field mask for `Profile` may look as such:\n\nmask \\{ paths: \"user.display\\_name\" paths: \"photo\" }\n\nIn JSON, the same mask is represented as below:\n\n\\{ mask: \"user.displayName,photo\" }\n\n# Field Masks and Oneof Fields\n\nField masks treat fields in oneofs just as regular fields. Consider the following message:\n\nmessage SampleMessage \\{ oneof test\\_oneof \\{ string name = 4; SubMessage sub\\_message = 9; } }\n\nThe field mask can be:\n\nmask \\{ paths: \"name\" }\n\nOr:\n\nmask \\{ paths: \"sub\\_message\" }\n\nNote that oneof type names (\"test\\_oneof\" in this case) cannot be used in paths.\n\n## Field Mask Verification\n\nThe implementation of any API method which has a FieldMask type field in the request should verify the included field paths, and return an `INVALID_ARGUMENT` error if any path is unmappable.\n\nUse the published contract view for this imported type’s empty, null and text representation. An ordinary record field list alone does not define that representation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "FieldMask",
        "slug": "/api/models/schema-oh20e1g6e1"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:updateAgentProfile",
        "agent-profiles:updatePromptFragment",
        "conversations:updatePromptVariables"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "google_protobuf_StringValue",
      "title": "StringValue",
      "slug": "/api/models/schema-1fc03re4nc",
      "description": "Standard JSON representation of this value.",
      "semantics": "Wrapper message for `string`.\n\nThe JSON representation for `StringValue` is JSON string.\n\nNot recommended for use in new APIs, but still useful for legacy APIs.\n\nUse the published contract view for this imported type’s scalar and null representation. A declaration containing a text field does not by itself imply ordinary object encoding.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "StringValue",
        "slug": "/api/models/schema-1fc03re4nc"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6282cia2fj"
      ],
      "fields": []
    },
    {
      "schemaName": "google_protobuf_StringValueInput",
      "title": "StringValue",
      "slug": "/api/models/schema-1fc03re4nc-input",
      "description": "Standard JSON representation of this value.",
      "semantics": "Wrapper message for `string`.\n\nThe JSON representation for `StringValue` is JSON string.\n\nNot recommended for use in new APIs, but still useful for legacy APIs.\n\nUse the published contract view for this imported type’s scalar and null representation. A declaration containing a text field does not by itself imply ordinary object encoding.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "StringValue",
        "slug": "/api/models/schema-1fc03re4nc"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6282cia2fj"
      ],
      "fields": []
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamCreateConnectTokenRequest",
      "title": "PipedreamCreateConnectTokenRequest",
      "slug": "/api/models/schema-osvjet16g7",
      "description": "Inputs for issuing a token and hosted link for connecting an end-user account.",
      "semantics": "Inputs for issuing a token and hosted link for connecting an end-user account.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamCreateConnectTokenRequest",
        "slug": "/api/models/schema-osvjet16g7"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamCreateConnectToken",
          "slug": "/api/connected-apps/pipedream-create-connect-token",
          "direction": "request"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamCreateConnectToken"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "state",
          "description": "Optional opaque state to round-trip in redirect",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "redirectUri",
          "description": "Optional universal redirect (success) URI override",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowedOrigins",
          "description": "CORS allowed origins for hosted Connect (iframe)",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "successRedirectUrl",
          "description": "Optional explicit success/error redirects",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "errorRedirectUrl",
          "description": "URL to which the account-connection flow redirects on error.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "webhookUrl",
          "description": "Optional webhook for Connect notifications",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "appSlug",
          "description": "App slug the end user should connect (e.g. \"github\", \"strava\").\n\nPipedream's hosted Connect page rejects the link its API returns unless an `app` query parameter is present. Forwarded to PipedreamService.CreateConnectToken, which builds a link that works as-is.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamCreateConnectTokenResponse",
      "title": "PipedreamCreateConnectTokenResponse",
      "slug": "/api/models/schema-oh4s6sbs4j",
      "description": "Result payload for issuing a token and hosted link for connecting an end-user account.",
      "semantics": "Result payload for issuing a token and hosted link for connecting an end-user account.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamCreateConnectTokenResponse",
        "slug": "/api/models/schema-oh4s6sbs4j"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamCreateConnectToken",
          "slug": "/api/connected-apps/pipedream-create-connect-token",
          "direction": "response"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamCreateConnectToken"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "token",
          "description": "Short-lived Pipedream Connect token returned by the provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "connectLinkUrl",
          "description": "Pipedream Connect URL used to authorize an account connection.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "expiresAt",
          "description": "Time when the credential or resource expires.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamDeleteAccountForCurrentUserRequest",
      "title": "PipedreamDeleteAccountForCurrentUserRequest",
      "slug": "/api/models/schema-ot1eis6oip",
      "description": "Inputs for removing a Pipedream account connection for the calling user.",
      "semantics": "Inputs for removing a Pipedream account connection for the calling user.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamDeleteAccountForCurrentUserRequest",
        "slug": "/api/models/schema-ot1eis6oip"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamDeleteAccountForCurrentUser",
          "slug": "/api/connected-apps/pipedream-delete-account-for-current-user",
          "direction": "request"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamDeleteAccountForCurrentUser"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "accountId",
          "description": "Which connected account to disconnect. Ownership is enforced downstream against the caller's own accounts — an id belonging to anyone else reads back as not found.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamDeleteAccountForCurrentUserResponse",
      "title": "PipedreamDeleteAccountForCurrentUserResponse",
      "slug": "/api/models/schema-oh64krg133",
      "description": "Result payload for removing a Pipedream account connection for the calling user.",
      "semantics": "Result payload for removing a Pipedream account connection for the calling user.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamDeleteAccountForCurrentUserResponse",
        "slug": "/api/models/schema-oh64krg133"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamDeleteAccountForCurrentUser",
          "slug": "/api/connected-apps/pipedream-delete-account-for-current-user",
          "direction": "response"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamDeleteAccountForCurrentUser"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deleted",
          "description": "Whether the deletion operation reports the resource removed.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamDeleteExternalUserForCurrentUserRequest",
      "title": "PipedreamDeleteExternalUserForCurrentUserRequest",
      "slug": "/api/models/schema-ot3j0ev6h1",
      "description": "Inputs for removing the calling user’s Pipedream identity and connected accounts.",
      "semantics": "Inputs for removing the calling user’s Pipedream identity and connected accounts.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamDeleteExternalUserForCurrentUserRequest",
        "slug": "/api/models/schema-ot3j0ev6h1"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamDeleteExternalUserForCurrentUser",
          "slug": "/api/connected-apps/pipedream-delete-external-user-for-current-user",
          "direction": "request"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamDeleteExternalUserForCurrentUser"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamDeleteExternalUserForCurrentUserResponse",
      "title": "PipedreamDeleteExternalUserForCurrentUserResponse",
      "slug": "/api/models/schema-oh8spe8fge",
      "description": "Result payload for removing the calling user’s Pipedream identity and connected accounts.",
      "semantics": "Result payload for removing the calling user’s Pipedream identity and connected accounts.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamDeleteExternalUserForCurrentUserResponse",
        "slug": "/api/models/schema-oh8spe8fge"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamDeleteExternalUserForCurrentUser",
          "slug": "/api/connected-apps/pipedream-delete-external-user-for-current-user",
          "direction": "response"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamDeleteExternalUserForCurrentUser"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deleted",
          "description": "Whether the deletion operation reports the resource removed.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "accountsDeleted",
          "description": "How many connected accounts went with the user. Counted from a read taken just before the delete, since Pipedream answers 204 with no body — a connection added between the two calls is still deleted, just not counted.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAccountsForCurrentUserRequest",
      "title": "PipedreamListAccountsForCurrentUserRequest",
      "slug": "/api/models/schema-ot4agjp7mj",
      "description": "Inputs for listing Pipedream account connections belonging to the calling user.",
      "semantics": "Inputs for listing Pipedream account connections belonging to the calling user.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamListAccountsForCurrentUserRequest",
        "slug": "/api/models/schema-ot4agjp7mj"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamListAccountsForCurrentUser",
          "slug": "/api/connected-apps/pipedream-list-accounts-for-current-user",
          "direction": "request"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamListAccountsForCurrentUser"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "after",
          "description": "Cursor selecting entries after the specified position in the provider listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "before",
          "description": "Cursor selecting entries before the specified position in the provider listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "limit",
          "description": "Maximum number of entries requested from the listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "oauthAppId",
          "description": "OAuth application identifier used to select connected accounts.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "app",
          "description": "Pipedream app slug used to restrict the operation to one connected app.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeCredentials",
          "description": "Whether the provider should include account credentials in its response.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAccountsForCurrentUserResponse",
      "title": "PipedreamListAccountsForCurrentUserResponse",
      "slug": "/api/models/schema-ot6t13a6bm",
      "description": "Result payload for listing Pipedream account connections belonging to the calling user.",
      "semantics": "Result payload for listing Pipedream account connections belonging to the calling user.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamListAccountsForCurrentUserResponse",
        "slug": "/api/models/schema-ot6t13a6bm"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamListAccountsForCurrentUser",
          "slug": "/api/connected-apps/pipedream-list-accounts-for-current-user",
          "direction": "response"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamListAccountsForCurrentUser"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "data",
          "description": "Pipedream connected accounts returned for this page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageInfo",
          "description": "Cursor and count information returned with the provider listing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAppCategoriesRequest",
      "title": "PipedreamListAppCategoriesRequest",
      "slug": "/api/models/schema-ot8641a54l",
      "description": "Inputs for discovering the categories used by the Pipedream app catalog.",
      "semantics": "Inputs for discovering the categories used by the Pipedream app catalog.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamListAppCategoriesRequest",
        "slug": "/api/models/schema-ot8641a54l"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamListAppCategories",
          "slug": "/api/connected-apps/pipedream-list-app-categories",
          "direction": "request"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamListAppCategories"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "after",
          "description": "Cursor selecting entries after the specified position in the provider listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "before",
          "description": "Cursor selecting entries before the specified position in the provider listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "limit",
          "description": "Maximum number of entries requested from the listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAppCategoriesResponse",
      "title": "PipedreamListAppCategoriesResponse",
      "slug": "/api/models/schema-otan7v5te8",
      "description": "Result payload for discovering the categories used by the Pipedream app catalog.",
      "semantics": "Result payload for discovering the categories used by the Pipedream app catalog.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamListAppCategoriesResponse",
        "slug": "/api/models/schema-otan7v5te8"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamListAppCategories",
          "slug": "/api/connected-apps/pipedream-list-app-categories",
          "direction": "response"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamListAppCategories"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "data",
          "description": "Pipedream app categories returned for this page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageInfo",
          "description": "Cursor and count information returned with the provider listing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAppsRequest",
      "title": "PipedreamListAppsRequest",
      "slug": "/api/models/schema-otcdsaa26k",
      "description": "Inputs for searching the Pipedream app catalog with pagination and sorting.",
      "semantics": "Inputs for searching the Pipedream app catalog with pagination and sorting.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamListAppsRequest",
        "slug": "/api/models/schema-otcdsaa26k"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamListApps",
          "slug": "/api/connected-apps/pipedream-list-apps",
          "direction": "request"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamListApps"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "after",
          "description": "Cursor selecting entries after the specified position in the provider listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "before",
          "description": "Cursor selecting entries before the specified position in the provider listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "limit",
          "description": "Maximum number of entries requested from the listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "q",
          "description": "Free-text search over app names in the integration catalog.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "categoryIds",
          "description": "Integration app category identifiers used to restrict the listing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sortKey",
          "description": "Provider field used to order catalog results.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sortDirection",
          "description": "Direction in which the provider should order catalog results.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAppsResponse",
      "title": "PipedreamListAppsResponse",
      "slug": "/api/models/schema-pb3gp8rrcb",
      "description": "Result payload for searching the Pipedream app catalog with pagination and sorting.",
      "semantics": "Result payload for searching the Pipedream app catalog with pagination and sorting.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamListAppsResponse",
        "slug": "/api/models/schema-pb3gp8rrcb"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamListApps",
          "slug": "/api/connected-apps/pipedream-list-apps",
          "direction": "response"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamListApps"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "data",
          "description": "Pipedream app catalog entries returned for this page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageInfo",
          "description": "Cursor and count information returned with the provider listing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamProxyForCurrentUserRequest",
      "title": "PipedreamProxyForCurrentUserRequest",
      "slug": "/api/models/schema-otehe3nfjo",
      "description": "Inputs for making an authenticated app API request through the calling user’s connected account.\n\n### Input constraints\n\n### method\n\nThe method must be exactly GET, HEAD, POST, PUT, PATCH, or DELETE. These literal choices are case-sensitive; no other method value satisfies this condition.",
      "semantics": "Inputs for making an authenticated app API request through the calling user’s connected account.\n\n### Input constraints\n\n### method\n\nThe method must be exactly GET, HEAD, POST, PUT, PATCH, or DELETE. These literal choices are case-sensitive; no other method value satisfies this condition.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamProxyForCurrentUserRequest",
        "slug": "/api/models/schema-otehe3nfjo"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamProxyForCurrentUser",
          "slug": "/api/connected-apps/pipedream-proxy-for-current-user",
          "direction": "request"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamProxyForCurrentUser"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "accountId",
          "description": "One of the caller's own connected accounts (id from list-accounts). Any other id reads back as not found.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "method",
          "description": "HTTP method used for the proxied or signed request.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "url",
          "description": "Destination URL for the proxied app API request.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "headers",
          "description": "Forwarded upstream (sent as x-pd-proxy-\\<name>).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "body",
          "description": "Raw request body (base64 on the wire). Empty for GET/HEAD.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamProxyForCurrentUserResponse",
      "title": "PipedreamProxyForCurrentUserResponse",
      "slug": "/api/models/schema-oha7bt4o3v",
      "description": "Result payload for making an authenticated app API request through the calling user’s connected account.",
      "semantics": "Result payload for making an authenticated app API request through the calling user’s connected account.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamProxyForCurrentUserResponse",
        "slug": "/api/models/schema-oha7bt4o3v"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamProxyForCurrentUser",
          "slug": "/api/connected-apps/pipedream-proxy-for-current-user",
          "direction": "response"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamProxyForCurrentUser"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "status",
          "description": "HTTP status code returned by the connected app’s API.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "headers",
          "description": "HTTP response headers returned by the connected app’s API.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "body",
          "description": "Raw upstream body (base64 on the wire), capped at 4 MiB. Larger bodies are rejected rather than truncated, with OUT\\_OF\\_RANGE and reason RESPONSE\\_TOO\\_LARGE.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamRetrieveAppRequest",
      "title": "PipedreamRetrieveAppRequest",
      "slug": "/api/models/schema-otgjsd72f0",
      "description": "Inputs for retrieving app catalog metadata by its Pipedream slug.",
      "semantics": "Inputs for retrieving app catalog metadata by its Pipedream slug.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamRetrieveAppRequest",
        "slug": "/api/models/schema-otgjsd72f0"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamRetrieveApp",
          "slug": "/api/connected-apps/pipedream-retrieve-app",
          "direction": "request"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamRetrieveApp"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "nameSlug",
          "description": "Pipedream app slug identifying the catalog entry.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamRetrieveAppResponse",
      "title": "PipedreamRetrieveAppResponse",
      "slug": "/api/models/schema-pb5g6hhucv",
      "description": "Result payload for retrieving app catalog metadata by its Pipedream slug.",
      "semantics": "Result payload for retrieving app catalog metadata by its Pipedream slug.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PipedreamRetrieveAppResponse",
        "slug": "/api/models/schema-pb5g6hhucv"
      },
      "operationOwners": [
        {
          "key": "connected-apps:pipedreamRetrieveApp",
          "slug": "/api/connected-apps/pipedream-retrieve-app",
          "direction": "response"
        }
      ],
      "usedBy": [
        "connected-apps:pipedreamRetrieveApp"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "app",
          "description": "Catalog metadata returned for the selected Pipedream app.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_pipedream_v1_Account",
      "title": "Account",
      "slug": "/api/models/schema-1fd4ce3lnc",
      "description": "Connected account (external user's OAuth connection to an app)",
      "semantics": "Connected account (external user's OAuth connection to an app)",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Account",
        "slug": "/api/models/schema-1fd4ce3lnc"
      },
      "operationOwners": [],
      "usedBy": [
        "connected-apps:pipedreamListAccountsForCurrentUser"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "id",
          "description": "Unique account ID.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name (e.g., user's email or handle).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalUserId",
          "description": "Your application's user ID.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "healthy",
          "description": "Whether the account credentials are valid.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "app",
          "description": "Pipedream application selected by the request or returned by the provider.\n\nApp name\\_slug",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "oauthAppId",
          "description": "OAuth app identifier (if applicable).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "credentialsLastRefreshedAt",
          "description": "Time when the connected account credentials were last refreshed.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "credentialsExpiresAt",
          "description": "Expiration time reported for the connected account credentials.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Error message if unhealthy.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastRefreshedAt",
          "description": "ISO 8601 when credentials were last refreshed.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nextRefreshAt",
          "description": "ISO 8601 when credentials will next be refreshed.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_pipedream_v1_App",
      "title": "App",
      "slug": "/api/models/schema-oti80oaqc4",
      "description": "App metadata",
      "semantics": "App metadata",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "App",
        "slug": "/api/models/schema-oti80oaqc4"
      },
      "operationOwners": [],
      "usedBy": [
        "connected-apps:pipedreamListApps",
        "connected-apps:pipedreamRetrieveApp"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "id",
          "description": "Identifier of the app record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nameSlug",
          "description": "Unique slug identifier (e.g., \"slack\", \"github\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name of the integration app in the Pipedream catalog.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authType",
          "description": "Authentication mechanism reported for the integration app.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "imgSrc",
          "description": "Logo image URL supplied for the integration app.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "customFieldsJson",
          "description": "JSON string for custom fields.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "categories",
          "description": "Categories assigned to the integration app.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "featuredWeight",
          "description": "Provider weight used to order featured apps.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_pipedream_v1_AppCategory",
      "title": "AppCategory",
      "slug": "/api/models/schema-ohbp8u7c1i",
      "description": "App category",
      "semantics": "App category",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "AppCategory",
        "slug": "/api/models/schema-ohbp8u7c1i"
      },
      "operationOwners": [],
      "usedBy": [
        "connected-apps:pipedreamListAppCategories"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "id",
          "description": "Identifier of the app category record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nameSlug",
          "description": "Category slug identifying the entry in the Pipedream catalog.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display label of the app category in the Pipedream catalog.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_pipedream_v1_PageInfo",
      "title": "PipedreamPageInfo",
      "slug": "/api/models/schema-ohepdcsvjo",
      "description": "Pagination information returned in list responses",
      "semantics": "Pagination information returned in list responses",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PipedreamPageInfo",
        "slug": "/api/models/schema-ohepdcsvjo"
      },
      "operationOwners": [],
      "usedBy": [
        "connected-apps:pipedreamListAccountsForCurrentUser",
        "connected-apps:pipedreamListAppCategories",
        "connected-apps:pipedreamListApps"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "count",
          "description": "Items in current page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Total items matching query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startCursor",
          "description": "Cursor for start of page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endCursor",
          "description": "Cursor for end of page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhook_v1_Endpoint",
      "title": "Endpoint",
      "slug": "/api/models/schema-1ffl20kv2k",
      "description": "Provider record describing a webhook delivery destination and its delivery settings.",
      "semantics": "Provider record describing a webhook delivery destination and its delivery settings.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Endpoint",
        "slug": "/api/models/schema-1ffl20kv2k"
      },
      "operationOwners": [],
      "usedBy": [
        "webhooks:createWebhookEndpoint",
        "webhooks:listWebhookEndpoints",
        "webhooks:updateWebhookEndpoint"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "id",
          "description": "Identifier of the endpoint record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name of the webhook delivery destination.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "url",
          "description": "URL of the webhook delivery destination.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Current state of the webhook endpoint.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "secret",
          "description": "Secret associated with the webhook endpoint.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "httpTimeout",
          "description": "Timeout for an individual webhook HTTP delivery, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rateLimit",
          "description": "Maximum delivery rate configured for the webhook endpoint.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rateLimitDuration",
          "description": "Delivery-rate window returned as a seconds-suffixed duration string (for example, 60s).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhook_v1_EventDelivery",
      "title": "EventDelivery",
      "slug": "/api/models/schema-1fiv947q56",
      "description": "Delivery-attempt state and response information for a webhook event.",
      "semantics": "Delivery-attempt state and response information for a webhook event.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "EventDelivery",
        "slug": "/api/models/schema-1fiv947q56"
      },
      "operationOwners": [],
      "usedBy": [
        "webhooks:listWebhookDeliveries",
        "webhooks:retryWebhookDelivery"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "id",
          "description": "Identifier of the event delivery record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "eventId",
          "description": "Identifier of the webhook event being delivered.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endpointId",
          "description": "Identifier of the webhook endpoint receiving deliveries.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Current delivery status reported for this webhook event attempt.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "attempts",
          "description": "Number of delivery attempts reported for the webhook event.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "eventType",
          "description": "Type of the webhook event represented by this delivery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "httpStatus",
          "description": "HTTP response status reported for the delivery attempt.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "responseData",
          "description": "Response body reported by the webhook delivery target.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Error information reported for this operation or item.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhook_v1_PaginationInfo",
      "title": "PaginationInfo",
      "slug": "/api/models/schema-ohggnansec",
      "description": "Page position and aggregate counts accompanying a paginated provider listing.",
      "semantics": "Page position and aggregate counts accompanying a paginated provider listing.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PaginationInfo",
        "slug": "/api/models/schema-ohggnansec"
      },
      "operationOwners": [],
      "usedBy": [
        "webhooks:listWebhookDeliveries",
        "webhooks:listWebhookEndpoints",
        "webhooks:listWebhookSubscriptions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "total",
          "description": "Total number of entries reported by the listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number used by this listing operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "perPage",
          "description": "Number of entries requested per page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalPages",
          "description": "Total number of pages reported for the current query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhook_v1_RetryConfig",
      "title": "RetryConfig",
      "slug": "/api/models/schema-1fkul0p8vd",
      "description": "Retry strategy, attempt limit, and interval for failed webhook deliveries.",
      "semantics": "Retry strategy, attempt limit, and interval for failed webhook deliveries.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RetryConfig",
        "slug": "/api/models/schema-1fkul0p8vd"
      },
      "operationOwners": [],
      "usedBy": [
        "webhooks:createWebhookEndpoint",
        "webhooks:createWebhookSubscription",
        "webhooks:listWebhookSubscriptions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "strategy",
          "description": "Webhook retry strategy selected in the provider configuration.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retryCount",
          "description": "Maximum retry count configured for webhook delivery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "intervalSeconds",
          "description": "Delay between webhook delivery retries, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhook_v1_Subscription",
      "title": "Subscription",
      "slug": "/api/models/schema-1fn66l17fv",
      "description": "Webhook event selection and retry settings associated with an endpoint.",
      "semantics": "Webhook event selection and retry settings associated with an endpoint.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Subscription",
        "slug": "/api/models/schema-1fn66l17fv"
      },
      "operationOwners": [],
      "usedBy": [
        "webhooks:createWebhookEndpoint",
        "webhooks:createWebhookSubscription",
        "webhooks:listWebhookSubscriptions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "id",
          "description": "Identifier of the subscription record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name of the webhook event subscription.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endpointId",
          "description": "Identifier of the webhook endpoint receiving deliveries.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "eventTypes",
          "description": "Event type names selected for the webhook subscription.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "filter",
          "description": "Event-body and header conditions used to select webhook events for this subscription.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retryConfig",
          "description": "Retry policy applied to the webhook subscription.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Client-supplied external subscription identifier. Empty when none was supplied.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated; equals created\\_at until the first accepted update.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhook_v1_SubscriptionFilter",
      "title": "SubscriptionFilter",
      "slug": "/api/models/schema-1fl5depe11",
      "description": "Event-body and header conditions selecting webhook events for a subscription.",
      "semantics": "Event-body and header conditions selecting webhook events for a subscription.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SubscriptionFilter",
        "slug": "/api/models/schema-1fl5depe11"
      },
      "operationOwners": [],
      "usedBy": [
        "webhooks:createWebhookEndpoint",
        "webhooks:createWebhookSubscription",
        "webhooks:listWebhookSubscriptions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "body",
          "description": "Event-body matching rules used by the webhook subscription filter.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "headers",
          "description": "Header-matching rules used to select events for the webhook subscription.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointRequest",
      "title": "CreateWebhookEndpointRequest",
      "slug": "/api/models/schema-otk5k2nal3",
      "description": "Inputs for registering a tenant webhook destination and its initial event subscription.\n\n### Input constraints\n\n### url\n\nThe url value must be a valid absolute URI.",
      "semantics": "Inputs for registering a tenant webhook destination and its initial event subscription.\n\n### Input constraints\n\n### url\n\nThe url value must be a valid absolute URI.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateWebhookEndpointRequest",
        "slug": "/api/models/schema-otk5k2nal3"
      },
      "operationOwners": [
        {
          "key": "webhooks:createWebhookEndpoint",
          "slug": "/api/webhooks/create-webhook-endpoint",
          "direction": "request"
        }
      ],
      "usedBy": [
        "webhooks:createWebhookEndpoint"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Display name of the tenant’s webhook delivery destination.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "url",
          "description": "URL of the tenant’s webhook delivery destination.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "eventTypes",
          "description": "Convenience: auto-create subscription.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointResponse",
      "title": "CreateWebhookEndpointResponse",
      "slug": "/api/models/schema-ph06e2gk3f",
      "description": "Result payload for registering a tenant webhook destination and its initial event subscription.",
      "semantics": "Result payload for registering a tenant webhook destination and its initial event subscription.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateWebhookEndpointResponse",
        "slug": "/api/models/schema-ph06e2gk3f"
      },
      "operationOwners": [
        {
          "key": "webhooks:createWebhookEndpoint",
          "slug": "/api/webhooks/create-webhook-endpoint",
          "direction": "response"
        }
      ],
      "usedBy": [
        "webhooks:createWebhookEndpoint"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "endpoint",
          "description": "Webhook endpoint returned by the provider operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "subscription",
          "description": "If event\\_types provided.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookSubscriptionRequest",
      "title": "CreateWebhookSubscriptionRequest",
      "slug": "/api/models/schema-otmdvalbld",
      "description": "Inputs for subscribing a tenant webhook endpoint to selected event types.",
      "semantics": "Inputs for subscribing a tenant webhook endpoint to selected event types.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateWebhookSubscriptionRequest",
        "slug": "/api/models/schema-otmdvalbld"
      },
      "operationOwners": [
        {
          "key": "webhooks:createWebhookSubscription",
          "slug": "/api/webhooks/create-webhook-subscription",
          "direction": "request"
        }
      ],
      "usedBy": [
        "webhooks:createWebhookSubscription"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "endpointId",
          "description": "Identifier of the webhook endpoint receiving deliveries.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "eventTypes",
          "description": "Event type names selected for the webhook subscription.",
          "presence": "collection",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "externalId",
          "description": "Optional client-supplied identifier, unique among the tenant’s live subscriptions. Use it to address deletion by a name your application manages; it becomes reusable after deletion.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookSubscriptionResponse",
      "title": "CreateWebhookSubscriptionResponse",
      "slug": "/api/models/schema-ph2f4vq0dm",
      "description": "Result payload for subscribing a tenant webhook endpoint to selected event types.",
      "semantics": "Result payload for subscribing a tenant webhook endpoint to selected event types.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateWebhookSubscriptionResponse",
        "slug": "/api/models/schema-ph2f4vq0dm"
      },
      "operationOwners": [
        {
          "key": "webhooks:createWebhookSubscription",
          "slug": "/api/webhooks/create-webhook-subscription",
          "direction": "response"
        }
      ],
      "usedBy": [
        "webhooks:createWebhookSubscription"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "subscription",
          "description": "Webhook subscription returned by the provider operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_DeleteWebhookEndpointRequest",
      "title": "DeleteWebhookEndpointRequest",
      "slug": "/api/models/schema-otome3tnkc",
      "description": "Inputs for removing a tenant’s webhook delivery destination.",
      "semantics": "Inputs for removing a tenant’s webhook delivery destination.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteWebhookEndpointRequest",
        "slug": "/api/models/schema-otome3tnkc"
      },
      "operationOwners": [
        {
          "key": "webhooks:deleteWebhookEndpoint",
          "slug": "/api/webhooks/delete-webhook-endpoint",
          "direction": "request"
        }
      ],
      "usedBy": [
        "webhooks:deleteWebhookEndpoint"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "endpointId",
          "description": "Identifier of the webhook endpoint receiving deliveries.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_DeleteWebhookEndpointResponse",
      "title": "DeleteWebhookEndpointResponse",
      "slug": "/api/models/schema-ohihqi99iu",
      "description": "Response schema for removing a tenant’s webhook delivery destination; no response fields are declared.",
      "semantics": "Response schema for removing a tenant’s webhook delivery destination; no response fields are declared.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteWebhookEndpointResponse",
        "slug": "/api/models/schema-ohihqi99iu"
      },
      "operationOwners": [
        {
          "key": "webhooks:deleteWebhookEndpoint",
          "slug": "/api/webhooks/delete-webhook-endpoint",
          "direction": "response"
        }
      ],
      "usedBy": [
        "webhooks:deleteWebhookEndpoint"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_DeleteWebhookSubscriptionRequest",
      "title": "DeleteWebhookSubscriptionRequest",
      "slug": "/api/models/schema-otqjkqhniv",
      "description": "Inputs for removing a tenant webhook subscription by its external identifier.",
      "semantics": "Inputs for removing a tenant webhook subscription by its external identifier.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteWebhookSubscriptionRequest",
        "slug": "/api/models/schema-otqjkqhniv"
      },
      "operationOwners": [
        {
          "key": "webhooks:deleteWebhookSubscription",
          "slug": "/api/webhooks/delete-webhook-subscription",
          "direction": "request"
        }
      ],
      "usedBy": [
        "webhooks:deleteWebhookSubscription"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "subscriptionId",
          "description": "Identifier of the subscription to delete. Supply exactly one of subscription\\_id or external\\_id.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Stable external identifier used to address the webhook subscription.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_DeleteWebhookSubscriptionResponse",
      "title": "DeleteWebhookSubscriptionResponse",
      "slug": "/api/models/schema-ohkm3pt5b7",
      "description": "Response schema for removing a tenant webhook subscription by its external identifier; no response fields are declared.",
      "semantics": "Response schema for removing a tenant webhook subscription by its external identifier; no response fields are declared.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteWebhookSubscriptionResponse",
        "slug": "/api/models/schema-ohkm3pt5b7"
      },
      "operationOwners": [
        {
          "key": "webhooks:deleteWebhookSubscription",
          "slug": "/api/webhooks/delete-webhook-subscription",
          "direction": "response"
        }
      ],
      "usedBy": [
        "webhooks:deleteWebhookSubscription"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookDeliveriesRequest",
      "title": "ListWebhookDeliveriesRequest",
      "slug": "/api/models/schema-otsttl2csm",
      "description": "Inputs for querying delivery attempts visible through the tenant webhook gateway.",
      "semantics": "Inputs for querying delivery attempts visible through the tenant webhook gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListWebhookDeliveriesRequest",
        "slug": "/api/models/schema-otsttl2csm"
      },
      "operationOwners": [
        {
          "key": "webhooks:listWebhookDeliveries",
          "slug": "/api/webhooks/list-webhook-deliveries",
          "direction": "request"
        }
      ],
      "usedBy": [
        "webhooks:listWebhookDeliveries"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "endpointId",
          "description": "Optional: filter by endpoint.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "subscriptionId",
          "description": "Optional: filter by subscription.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "eventId",
          "description": "Optional: filter by event.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Delivery status used to restrict the tenant webhook-delivery query.\n\nOptional: filter by status",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAfter",
          "description": "Optional: filter by creation time.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdBefore",
          "description": "Optional: filter by creation time.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number used by this listing operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "perPage",
          "description": "Number of entries requested per page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookDeliveriesResponse",
      "title": "ListWebhookDeliveriesResponse",
      "slug": "/api/models/schema-pb7bmr1blp",
      "description": "Result payload for querying delivery attempts visible through the tenant webhook gateway.",
      "semantics": "Result payload for querying delivery attempts visible through the tenant webhook gateway.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListWebhookDeliveriesResponse",
        "slug": "/api/models/schema-pb7bmr1blp"
      },
      "operationOwners": [
        {
          "key": "webhooks:listWebhookDeliveries",
          "slug": "/api/webhooks/list-webhook-deliveries",
          "direction": "response"
        }
      ],
      "usedBy": [
        "webhooks:listWebhookDeliveries"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deliveries",
          "description": "Webhook delivery records matching the listing query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pagination",
          "description": "Page position and total counts reported with the listing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookEndpointsRequest",
      "title": "ListWebhookEndpointsRequest",
      "slug": "/api/models/schema-otunivouog",
      "description": "Inputs for listing webhook destinations registered for the tenant.",
      "semantics": "Inputs for listing webhook destinations registered for the tenant.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListWebhookEndpointsRequest",
        "slug": "/api/models/schema-otunivouog"
      },
      "operationOwners": [
        {
          "key": "webhooks:listWebhookEndpoints",
          "slug": "/api/webhooks/list-webhook-endpoints",
          "direction": "request"
        }
      ],
      "usedBy": [
        "webhooks:listWebhookEndpoints"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "page",
          "description": "Page number used by this listing operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "perPage",
          "description": "Number of entries requested per page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookEndpointsResponse",
      "title": "ListWebhookEndpointsResponse",
      "slug": "/api/models/schema-pb91b9k95q",
      "description": "Result payload for listing webhook destinations registered for the tenant.",
      "semantics": "Result payload for listing webhook destinations registered for the tenant.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListWebhookEndpointsResponse",
        "slug": "/api/models/schema-pb91b9k95q"
      },
      "operationOwners": [
        {
          "key": "webhooks:listWebhookEndpoints",
          "slug": "/api/webhooks/list-webhook-endpoints",
          "direction": "response"
        }
      ],
      "usedBy": [
        "webhooks:listWebhookEndpoints"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "endpoints",
          "description": "Webhook endpoints returned by the listing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pagination",
          "description": "Page position and total counts reported with the listing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookSubscriptionsRequest",
      "title": "ListWebhookSubscriptionsRequest",
      "slug": "/api/models/schema-ou0c6h5fbv",
      "description": "Inputs for listing event subscriptions registered for tenant webhook destinations.",
      "semantics": "Inputs for listing event subscriptions registered for tenant webhook destinations.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListWebhookSubscriptionsRequest",
        "slug": "/api/models/schema-ou0c6h5fbv"
      },
      "operationOwners": [
        {
          "key": "webhooks:listWebhookSubscriptions",
          "slug": "/api/webhooks/list-webhook-subscriptions",
          "direction": "request"
        }
      ],
      "usedBy": [
        "webhooks:listWebhookSubscriptions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "endpointId",
          "description": "Optional: filter by endpoint.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number used by this listing operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "perPage",
          "description": "Number of entries requested per page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookSubscriptionsResponse",
      "title": "ListWebhookSubscriptionsResponse",
      "slug": "/api/models/schema-ph497s8r96",
      "description": "Result payload for listing event subscriptions registered for tenant webhook destinations.",
      "semantics": "Result payload for listing event subscriptions registered for tenant webhook destinations.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListWebhookSubscriptionsResponse",
        "slug": "/api/models/schema-ph497s8r96"
      },
      "operationOwners": [
        {
          "key": "webhooks:listWebhookSubscriptions",
          "slug": "/api/webhooks/list-webhook-subscriptions",
          "direction": "response"
        }
      ],
      "usedBy": [
        "webhooks:listWebhookSubscriptions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "subscriptions",
          "description": "Webhook subscriptions returned by the listing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pagination",
          "description": "Page position and total counts reported with the listing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_RetryWebhookDeliveryRequest",
      "title": "RetryWebhookDeliveryRequest",
      "slug": "/api/models/schema-ou2dej6v4q",
      "description": "Inputs for requesting another attempt for a tenant webhook delivery.",
      "semantics": "Inputs for requesting another attempt for a tenant webhook delivery.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RetryWebhookDeliveryRequest",
        "slug": "/api/models/schema-ou2dej6v4q"
      },
      "operationOwners": [
        {
          "key": "webhooks:retryWebhookDelivery",
          "slug": "/api/webhooks/retry-webhook-delivery",
          "direction": "request"
        }
      ],
      "usedBy": [
        "webhooks:retryWebhookDelivery"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deliveryId",
          "description": "Identifier of the webhook delivery to inspect or retry.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_RetryWebhookDeliveryResponse",
      "title": "RetryWebhookDeliveryResponse",
      "slug": "/api/models/schema-pbbkb0o5si",
      "description": "Result payload for requesting another attempt for a tenant webhook delivery.",
      "semantics": "Result payload for requesting another attempt for a tenant webhook delivery.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RetryWebhookDeliveryResponse",
        "slug": "/api/models/schema-pbbkb0o5si"
      },
      "operationOwners": [
        {
          "key": "webhooks:retryWebhookDelivery",
          "slug": "/api/webhooks/retry-webhook-delivery",
          "direction": "response"
        }
      ],
      "usedBy": [
        "webhooks:retryWebhookDelivery"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "delivery",
          "description": "Webhook delivery record returned by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_UpdateWebhookEndpointRequest",
      "title": "UpdateWebhookEndpointRequest",
      "slug": "/api/models/schema-ou3no4ecph",
      "description": "Inputs for changing the address or descriptive metadata of a tenant webhook destination.",
      "semantics": "Inputs for changing the address or descriptive metadata of a tenant webhook destination.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateWebhookEndpointRequest",
        "slug": "/api/models/schema-ou3no4ecph"
      },
      "operationOwners": [
        {
          "key": "webhooks:updateWebhookEndpoint",
          "slug": "/api/webhooks/update-webhook-endpoint",
          "direction": "request"
        }
      ],
      "usedBy": [
        "webhooks:updateWebhookEndpoint"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "endpointId",
          "description": "Identifier of the webhook endpoint receiving deliveries.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "name",
          "description": "Display name of the tenant’s webhook delivery destination.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "url",
          "description": "URL of the tenant’s webhook delivery destination.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "integrations_v1_services_webhookgateway_v1_UpdateWebhookEndpointResponse",
      "title": "UpdateWebhookEndpointResponse",
      "slug": "/api/models/schema-pbdbk4vbfo",
      "description": "Result payload for changing the address or descriptive metadata of a tenant webhook destination.",
      "semantics": "Result payload for changing the address or descriptive metadata of a tenant webhook destination.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateWebhookEndpointResponse",
        "slug": "/api/models/schema-pbdbk4vbfo"
      },
      "operationOwners": [
        {
          "key": "webhooks:updateWebhookEndpoint",
          "slug": "/api/webhooks/update-webhook-endpoint",
          "direction": "response"
        }
      ],
      "usedBy": [
        "webhooks:updateWebhookEndpoint"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "endpoint",
          "description": "Webhook endpoint returned by the provider operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_Compaction",
      "title": "Compaction",
      "slug": "/api/models/schema-1fpqunnq41",
      "description": "Compaction metadata",
      "semantics": "Compaction metadata",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Compaction",
        "slug": "/api/models/schema-1fpqunnq41"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:getConversationState"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "id",
          "description": "Identifier of the compaction record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startSequence",
          "description": "Sequence number of the first conversation message represented by the compaction.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endSequence",
          "description": "Sequence number of the last conversation message represented by the compaction.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "summary",
          "description": "Summary text produced by conversation compaction.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "originalTokenCount",
          "description": "Estimated token count of the context before compaction.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "summaryTokenCount",
          "description": "Estimated token count of the generated summary.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modelUsed",
          "description": "Model identifier used for the context compaction.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Execution state of the conversation compaction.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "triggerReason",
          "description": "Reason for triggering this compaction (auto threshold vs manual)",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_CompactionConfig",
      "title": "CompactionConfig",
      "slug": "/api/models/schema-1hbvkcgu5m",
      "description": "Configuration for compaction strategy",
      "semantics": "Configuration for compaction strategy",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "CompactionConfig",
        "slug": "/api/models/schema-1hbvkcgu5m"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:getConversationState",
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "mode",
          "description": "Context compaction mode selected by the operation.\n\nSYNC, ASYNC",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "threshold",
          "description": "Token-count or context-window-percentage threshold that triggers compaction.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "generationConfig",
          "description": "Separate config for compaction LLM calls.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "preserveRecent",
          "description": "Messages to keep uncompacted.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_CompactionConfigInput",
      "title": "CompactionConfig",
      "slug": "/api/models/schema-1hbvkcgu5m-input",
      "description": "Configuration for compaction strategy",
      "semantics": "Configuration for compaction strategy",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "CompactionConfig",
        "slug": "/api/models/schema-1hbvkcgu5m"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createThread",
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "mode",
          "description": "Context compaction mode selected by the operation.\n\nSYNC, ASYNC",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "threshold",
          "description": "Token-count or context-window-percentage threshold that triggers compaction.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "generationConfig",
          "description": "Separate config for compaction LLM calls.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "preserveRecent",
          "description": "Messages to keep uncompacted.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_ContextManagementSettings",
      "title": "ContextManagementSettings",
      "slug": "/api/models/schema-1hgrvsu34j",
      "description": "Configuration for context management",
      "semantics": "Configuration for context management",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ContextManagementSettings",
        "slug": "/api/models/schema-1hgrvsu34j"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:getConversationState",
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "strategy",
          "description": "Context management strategy selected for the conversation.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "compactionConfig",
          "description": "Configuration applied when summarizing the conversation context.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "windowingConfig",
          "description": "Rules selecting the message window retained in model context.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "selectiveExclusionConfig",
          "description": "Rules selecting content to omit from the model context.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_ContextManagementSettingsInput",
      "title": "ContextManagementSettings",
      "slug": "/api/models/schema-1hgrvsu34j-input",
      "description": "Configuration for context management",
      "semantics": "Configuration for context management",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ContextManagementSettings",
        "slug": "/api/models/schema-1hgrvsu34j"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createThread",
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "strategy",
          "description": "Context management strategy selected for the conversation.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "compactionConfig",
          "description": "Configuration applied when summarizing the conversation context.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "windowingConfig",
          "description": "Rules selecting the message window retained in model context.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "selectiveExclusionConfig",
          "description": "Rules selecting content to omit from the model context.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_ReceiveMessageRequest",
      "title": "ReceiveMessageRequest",
      "slug": "/api/models/schema-q69v86pv94",
      "description": "Receives a new message event (e.g., from the generation workflow)",
      "semantics": "Receives a new message event (e.g., from the generation workflow)",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ReceiveMessageRequest",
        "slug": "/api/models/schema-q69v86pv94"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/9frhv4euve"
      ],
      "fields": [
        {
          "name": "message",
          "description": "The message to append (assistant/tool/system)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_ReceiveMessageRequestInput",
      "title": "ReceiveMessageRequest",
      "slug": "/api/models/schema-q69v86pv94-input",
      "description": "Receives a new message event (e.g., from the generation workflow)",
      "semantics": "Receives a new message event (e.g., from the generation workflow)",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ReceiveMessageRequest",
        "slug": "/api/models/schema-q69v86pv94"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/9frhv4euve"
      ],
      "fields": [
        {
          "name": "message",
          "description": "The message to append (assistant/tool/system)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_SelectiveExclusionConfig",
      "title": "SelectiveExclusionConfig",
      "slug": "/api/models/schema-1hc73qpaio",
      "description": "Configuration for selective exclusion",
      "semantics": "Configuration for selective exclusion",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SelectiveExclusionConfig",
        "slug": "/api/models/schema-1hc73qpaio"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:getConversationState",
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "excludeToolResults",
          "description": "Whether tool-result content is excluded from model context.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "excludeImages",
          "description": "Whether image content is excluded from model context.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "excludeFiles",
          "description": "Whether file content is excluded from model context.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "excludeReasoning",
          "description": "When true, reasoning/thinking content parts are excluded from context",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_SelectiveExclusionConfigInput",
      "title": "SelectiveExclusionConfig",
      "slug": "/api/models/schema-1hc73qpaio-input",
      "description": "Configuration for selective exclusion",
      "semantics": "Configuration for selective exclusion",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SelectiveExclusionConfig",
        "slug": "/api/models/schema-1hc73qpaio"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createThread",
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "excludeToolResults",
          "description": "Whether tool-result content is excluded from model context.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "excludeImages",
          "description": "Whether image content is excluded from model context.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "excludeFiles",
          "description": "Whether file content is excluded from model context.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "excludeReasoning",
          "description": "When true, reasoning/thinking content parts are excluded from context",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_ThresholdConfig",
      "title": "ThresholdConfig",
      "slug": "/api/models/schema-1frig4k431",
      "description": "Threshold configuration for triggering compaction\n\ntoken\\_count and percentage are mutually exclusive alternatives. Independent tracked fields do not enforce this relationship.",
      "semantics": "Threshold configuration for triggering compaction\n\ntoken\\_count and percentage are mutually exclusive alternatives. Independent tracked fields do not enforce this relationship.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ThresholdConfig",
        "slug": "/api/models/schema-1frig4k431"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:getConversationState",
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "tokenCount",
          "description": "Absolute token limit.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "percentage",
          "description": "% of model's context window.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_ThresholdConfigInput",
      "title": "ThresholdConfig",
      "slug": "/api/models/schema-1frig4k431-input",
      "description": "Threshold configuration for triggering compaction\n\ntoken\\_count and percentage are mutually exclusive alternatives. Independent tracked fields do not enforce this relationship.",
      "semantics": "Threshold configuration for triggering compaction\n\ntoken\\_count and percentage are mutually exclusive alternatives. Independent tracked fields do not enforce this relationship.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ThresholdConfig",
        "slug": "/api/models/schema-1frig4k431"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createThread",
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "tokenCount",
          "description": "Absolute token limit.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "percentage",
          "description": "% of model's context window.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_WindowingConfig",
      "title": "WindowingConfig",
      "slug": "/api/models/schema-1he7ulevif",
      "description": "Configuration for windowing strategy",
      "semantics": "Configuration for windowing strategy",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "WindowingConfig",
        "slug": "/api/models/schema-1he7ulevif"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:getConversationState",
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "maxMessages",
          "description": "Maximum number of conversation messages to retain in the context window.\n\nDefault: 100",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_actors_conversation_v1_WindowingConfigInput",
      "title": "WindowingConfig",
      "slug": "/api/models/schema-1he7ulevif-input",
      "description": "Configuration for windowing strategy",
      "semantics": "Configuration for windowing strategy",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "WindowingConfig",
        "slug": "/api/models/schema-1he7ulevif"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createThread",
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "maxMessages",
          "description": "Maximum number of conversation messages to retain in the context window.\n\nDefault: 100",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_AgentProfile",
      "title": "AgentProfile",
      "slug": "/api/models/schema-1hmbcecg1j",
      "description": "A reusable persona with model configuration, tools and metadata describing when it should be selected. See the profile-selection and versioning guide for profile resolution and fragment versions.",
      "semantics": "A reusable persona with model configuration, tools and metadata describing when it should be selected. See the profile-selection and versioning guide for profile resolution and fragment versions.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "AgentProfile",
        "slug": "/api/models/schema-1hmbcecg1j"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profileId",
          "description": "Stable id, unique within the project library.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name used when selecting an agent profile.\n\ne.g. \"Nutrition Coach\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-facing summary.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "whenToUse",
          "description": "Routing hint, Skill-style \"use when…\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "keywords",
          "description": "Keywords associated with discovery or selection of the agent profile.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enabled",
          "description": "Whether the profile is enabled for selection. Omission during creation defaults to true; an explicitly false value creates a disabled profile. Disabled profiles are not selectable.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "generationConfig",
          "description": "Model, sampling, and tool configuration used for generation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "mcpServers",
          "description": "MCP servers used for tool discovery when this profile is active. This list replaces the conversation-wide MCP server list for those turns.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "variableSpecs",
          "description": "Variables consumed by the profile’s system-prompt template, rendered from the conversation’s prompt\\_variables.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Output-only immutable revision of the profile. Versions start at one and increase on successful mutations; values supplied on writes are ignored.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_AgentProfileInput",
      "title": "AgentProfile",
      "slug": "/api/models/schema-1hmbcecg1j-input",
      "description": "A reusable persona with model configuration, tools and metadata describing when it should be selected. See the profile-selection and versioning guide for profile resolution and fragment versions.",
      "semantics": "A reusable persona with model configuration, tools and metadata describing when it should be selected. See the profile-selection and versioning guide for profile resolution and fragment versions.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "AgentProfile",
        "slug": "/api/models/schema-1hmbcecg1j"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:updateAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profileId",
          "description": "Stable id, unique within the project library.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name used when selecting an agent profile.\n\ne.g. \"Nutrition Coach\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-facing summary.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "whenToUse",
          "description": "Routing hint, Skill-style \"use when…\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "keywords",
          "description": "Keywords associated with discovery or selection of the agent profile.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enabled",
          "description": "Whether the profile is enabled for selection. Omission during creation defaults to true; an explicitly false value creates a disabled profile. Disabled profiles are not selectable.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "generationConfig",
          "description": "Model, sampling, and tool configuration used for generation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "mcpServers",
          "description": "MCP servers used for tool discovery when this profile is active. This list replaces the conversation-wide MCP server list for those turns.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "variableSpecs",
          "description": "Variables consumed by the profile’s system-prompt template, rendered from the conversation’s prompt\\_variables.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Output-only immutable revision of the profile. Versions start at one and increase on successful mutations; values supplied on writes are ignored.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_AgentProfileLibrary",
      "title": "AgentProfileLibrary",
      "slug": "/api/models/schema-ou55jqfkih",
      "description": "Selection metadata for the project’s agent profiles. Retrieve an individual profile to read its complete model and tool configuration.",
      "semantics": "Selection metadata for the project’s agent profiles. Retrieve an individual profile to read its complete model and tool configuration.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "AgentProfileLibrary",
        "slug": "/api/models/schema-ou55jqfkih"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:getAgentProfileLibrary"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profiles",
          "description": "Profile identity and selection metadata. Full configurations are retrieved individually with GetAgentProfile.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "defaultProfileId",
          "description": "Project's nominated default profile. Native conversations do not automatically apply it when active\\_profile\\_id is empty; the client must explicitly select its intended profile.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_AgentProfileMetadata",
      "title": "AgentProfileMetadata",
      "slug": "/api/models/schema-ohmse4h323",
      "description": "Profile identity and selection hints for a picker or router. This projection excludes the system prompt, generation settings, tools and MCP configuration; retrieve AgentProfile to inspect the runtime configuration. These hints do not establish that routing is active.",
      "semantics": "Profile identity and selection hints for a picker or router. This projection excludes the system prompt, generation settings, tools and MCP configuration; retrieve AgentProfile to inspect the runtime configuration. These hints do not establish that routing is active.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "AgentProfileMetadata",
        "slug": "/api/models/schema-ohmse4h323"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:getAgentProfileLibrary"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name used when presenting an agent profile in the library.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "whenToUse",
          "description": "Instructions describing when this agent profile should be selected.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "keywords",
          "description": "Keywords associated with discovery or selection of the agent profile.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enabled",
          "description": "Whether this configuration is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_Annotation",
      "title": "Annotation",
      "slug": "/api/models/schema-1i0hjer0pd",
      "description": "Tagged provider annotation attached to generated content, such as a citation or PDF reference.",
      "semantics": "Tagged provider annotation attached to generated content, such as a citation or PDF reference.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Annotation",
        "slug": "/api/models/schema-1i0hjer0pd"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "kind",
          "description": "Selected kind; determines which submessage is populated",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "urlCitation",
          "description": "Submessage fields (optional); populate the one matching kind",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pdf",
          "description": "PDF annotation identifying the parsed file and available parsing output.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Provider-specific extras.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_AnnotationInput",
      "title": "Annotation",
      "slug": "/api/models/schema-1i0hjer0pd-input",
      "description": "Tagged provider annotation attached to generated content, such as a citation or PDF reference.",
      "semantics": "Tagged provider annotation attached to generated content, such as a citation or PDF reference.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Annotation",
        "slug": "/api/models/schema-1i0hjer0pd"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "kind",
          "description": "Selected kind; determines which submessage is populated",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "urlCitation",
          "description": "Submessage fields (optional); populate the one matching kind",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pdf",
          "description": "PDF annotation identifying the parsed file and available parsing output.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Provider-specific extras.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_Backoff",
      "title": "Backoff",
      "slug": "/api/models/schema-1gqlghlp0v",
      "description": "Requested initial delay, growth factor and upper bound for tool-call retries. The current generation workflow stores this configuration but does not schedule retries from it.",
      "semantics": "Requested initial delay, growth factor and upper bound for tool-call retries. The current generation workflow stores this configuration but does not schedule retries from it.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Backoff",
        "slug": "/api/models/schema-1gqlghlp0v"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "conversations:updatePromptVariables",
        "conversations:updateSettings",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "initialMs",
          "description": "Requested initial retry delay in milliseconds; not applied by the current generation workflow.\n\ne.g., 200",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "multiplier",
          "description": "Requested retry-delay multiplier; not applied by the current generation workflow.\n\ne.g., 2.0",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxMs",
          "description": "Requested maximum retry delay in milliseconds; not applied by the current generation workflow.\n\ne.g., 2000",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_BackoffInput",
      "title": "Backoff",
      "slug": "/api/models/schema-1gqlghlp0v-input",
      "description": "Requested initial delay, growth factor and upper bound for tool-call retries. The current generation workflow stores this configuration but does not schedule retries from it.",
      "semantics": "Requested initial delay, growth factor and upper bound for tool-call retries. The current generation workflow stores this configuration but does not schedule retries from it.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Backoff",
        "slug": "/api/models/schema-1gqlghlp0v"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "conversations:updateSettings",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "initialMs",
          "description": "Requested initial retry delay in milliseconds; not applied by the current generation workflow.\n\ne.g., 200",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "multiplier",
          "description": "Requested retry-delay multiplier; not applied by the current generation workflow.\n\ne.g., 2.0",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxMs",
          "description": "Requested maximum retry delay in milliseconds; not applied by the current generation workflow.\n\ne.g., 2000",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_BranchMetadata",
      "title": "BranchMetadata",
      "slug": "/api/models/schema-q7dt6t9g53",
      "description": "Reason, labels, and quality metadata recorded for an alternative conversation branch.",
      "semantics": "Reason, labels, and quality metadata recorded for an alternative conversation branch.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "BranchMetadata",
        "slug": "/api/models/schema-q7dt6t9g53"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/626klhca0u"
      ],
      "fields": [
        {
          "name": "createdReason",
          "description": "Reason recorded when creating the alternative conversation branch.\n\n\"user\\_request\", \"error\\_recovery\", \"a\\_b\\_test\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Description of the conversation branch’s purpose.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Key-value labels associated with the conversation branch.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "qualityScore",
          "description": "0-1, how good this branch is.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_BranchMetadataInput",
      "title": "BranchMetadata",
      "slug": "/api/models/schema-q7dt6t9g53-input",
      "description": "Reason, labels, and quality metadata recorded for an alternative conversation branch.",
      "semantics": "Reason, labels, and quality metadata recorded for an alternative conversation branch.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "BranchMetadata",
        "slug": "/api/models/schema-q7dt6t9g53"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/626klhca0u"
      ],
      "fields": [
        {
          "name": "createdReason",
          "description": "Reason recorded when creating the alternative conversation branch.\n\n\"user\\_request\", \"error\\_recovery\", \"a\\_b\\_test\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Description of the conversation branch’s purpose.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Key-value labels associated with the conversation branch.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "qualityScore",
          "description": "0-1, how good this branch is.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ClientContext",
      "title": "ClientContext",
      "slug": "/api/models/schema-1i2sndrl93",
      "description": "Opaque caller-supplied attributes attached to a conversation message.\n\nValues are strings, including values such as `\"false\"`. The schema allows at most 32 pairs, keys of at most 64 characters, and values of at most 1,024 characters. Keep the entire map well below 8 KiB: Travila also applies an encoded-size limit that includes field overhead and drops context that exceeds it. Short page identifiers and a few relevant values are preferable to a page dump; an oversized map is not automatically shortened.",
      "semantics": "Opaque caller-supplied attributes attached to a conversation message.\n\nValues are strings, including values such as `\"false\"`. The schema allows at most 32 pairs, keys of at most 64 characters, and values of at most 1,024 characters. Keep the entire map well below 8 KiB: Travila also applies an encoded-size limit that includes field overhead and drops context that exceeds it. Short page identifiers and a few relevant values are preferable to a page dump; an oversized map is not automatically shortened.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ClientContext",
        "slug": "/api/models/schema-1i2sndrl93"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "values",
          "description": "Arbitrary client-supplied context for this message (e.g. page, referrer, device, in-app flow). Keys/values are opaque strings.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ClientContextInput",
      "title": "ClientContext",
      "slug": "/api/models/schema-1i2sndrl93-input",
      "description": "Opaque caller-supplied attributes attached to a conversation message.\n\nValues are strings, including values such as `\"false\"`. The schema allows at most 32 pairs, keys of at most 64 characters, and values of at most 1,024 characters. Keep the entire map well below 8 KiB: Travila also applies an encoded-size limit that includes field overhead and drops context that exceeds it. Short page identifiers and a few relevant values are preferable to a page dump; an oversized map is not automatically shortened.",
      "semantics": "Opaque caller-supplied attributes attached to a conversation message.\n\nValues are strings, including values such as `\"false\"`. The schema allows at most 32 pairs, keys of at most 64 characters, and values of at most 1,024 characters. Keep the entire map well below 8 KiB: Travila also applies an encoded-size limit that includes field overhead and drops context that exceeds it. Short page identifiers and a few relevant values are preferable to a page dump; an oversized map is not automatically shortened.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ClientContext",
        "slug": "/api/models/schema-1i2sndrl93"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "values",
          "description": "Arbitrary client-supplied context for this message (e.g. page, referrer, device, in-app flow). Keys/values are opaque strings.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ClientToolResult",
      "title": "ClientToolResult",
      "slug": "/api/models/schema-1i4kndhs46",
      "description": "Result submitted by the caller for a client-side tool call. Both tool\\_call\\_id and tool\\_name must identify the same pending call. When submission reaches workflow validation, either missing value causes a 400 response. Copy the call's id and name into these result fields, rather than submitting the pending ToolCall unchanged.\n\nFields marked optional in the wire shape may still be required for a valid workflow submission. Both `tool_call_id` and `tool_name` must identify the same pending call; workflow validation rejects either missing value.",
      "semantics": "Result submitted by the caller for a client-side tool call. Both tool\\_call\\_id and tool\\_name must identify the same pending call. When submission reaches workflow validation, either missing value causes a 400 response. Copy the call's id and name into these result fields, rather than submitting the pending ToolCall unchanged.\n\nFields marked optional in the wire shape may still be required for a valid workflow submission. Both `tool_call_id` and `tool_name` must identify the same pending call; workflow validation rejects either missing value.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ClientToolResult",
        "slug": "/api/models/schema-1i4kndhs46"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:submitClientToolResults",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "toolCallId",
          "description": "Required call identifier, copied from the pending ToolCall.id.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolName",
          "description": "Required tool name, copied from the pending ToolCall.name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resultJson",
          "description": "Structured output for a matched pending call. A nonempty object records COMPLETED; an empty or omitted object records FAILED, including when the client could not complete the action.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Supplied error detail. The current result handler does not consume this field; the presence of a nonempty result\\_json alone determines whether the tool is recorded as completed.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_CompletionTokensDetails",
      "title": "CompletionTokensDetails",
      "slug": "/api/models/schema-1i6q4qpg72",
      "description": "Breakdown of completion-token usage. Categories are measured by different upstream tokenizers and need not sum to completion\\_tokens; reasoning\\_tokens can exceed completion\\_tokens. One category must not be derived by subtracting the others.",
      "semantics": "Breakdown of completion-token usage. Categories are measured by different upstream tokenizers and need not sum to completion\\_tokens; reasoning\\_tokens can exceed completion\\_tokens. One category must not be derived by subtracting the others.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "CompletionTokensDetails",
        "slug": "/api/models/schema-1i6q4qpg72"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "reasoningTokens",
          "description": "Tokens used for reasoning/thinking.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "imageTokens",
          "description": "Completion tokens emitted as image output.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "audioTokens",
          "description": "Completion tokens emitted as audio output.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_CompletionTokensDetailsInput",
      "title": "CompletionTokensDetails",
      "slug": "/api/models/schema-1i6q4qpg72-input",
      "description": "Breakdown of completion-token usage. Categories are measured by different upstream tokenizers and need not sum to completion\\_tokens; reasoning\\_tokens can exceed completion\\_tokens. One category must not be derived by subtracting the others.",
      "semantics": "Breakdown of completion-token usage. Categories are measured by different upstream tokenizers and need not sum to completion\\_tokens; reasoning\\_tokens can exceed completion\\_tokens. One category must not be derived by subtracting the others.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "CompletionTokensDetails",
        "slug": "/api/models/schema-1i6q4qpg72"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "reasoningTokens",
          "description": "Tokens used for reasoning/thinking.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "imageTokens",
          "description": "Completion tokens emitted as image output.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "audioTokens",
          "description": "Completion tokens emitted as audio output.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ContentPart",
      "title": "ContentPart",
      "slug": "/api/models/schema-1hqi9r2bhh",
      "description": "Content parts composing a message, using a flattened structure for JSON compatibility. The `type` identifies how the content is represented; only defined content types are accepted.",
      "semantics": "Content parts composing a message, using a flattened structure for JSON compatibility. The `type` identifies how the content is represented; only defined content types are accepted.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ContentPart",
        "slug": "/api/models/schema-1hqi9r2bhh"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:mcpListResources",
        "conversations:mcpReadResource",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "type",
          "description": "Kind of content carried by this message part.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Text content, image URL, file ID, or base64-encoded data.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional type-specific metadata (dimensions, mime\\_type, etc.).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cachePreferred",
          "description": "Hint that this part is eligible for provider prompt caching.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "structuredMessage",
          "description": "Populated on TEXT parts for structured output responses.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ContentPartInput",
      "title": "ContentPart",
      "slug": "/api/models/schema-1hqi9r2bhh-input",
      "description": "Content parts composing a message, using a flattened structure for JSON compatibility. The `type` identifies how the content is represented; only defined content types are accepted.",
      "semantics": "Content parts composing a message, using a flattened structure for JSON compatibility. The `type` identifies how the content is represented; only defined content types are accepted.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ContentPart",
        "slug": "/api/models/schema-1hqi9r2bhh"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "type",
          "description": "Kind of content carried by this message part.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Text content, image URL, file ID, or base64-encoded data.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional type-specific metadata (dimensions, mime\\_type, etc.).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cachePreferred",
          "description": "Hint that this part is eligible for provider prompt caching.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "structuredMessage",
          "description": "Populated on TEXT parts for structured output responses.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ConversationBranch",
      "title": "ConversationBranch",
      "slug": "/api/models/schema-q7hl8fcm9r",
      "description": "Conversation branching",
      "semantics": "Conversation branching",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ConversationBranch",
        "slug": "/api/models/schema-q7hl8fcm9r"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/626klhca0u"
      ],
      "fields": [
        {
          "name": "branchId",
          "description": "Identifier of the conversation branch.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "branchName",
          "description": "Name distinguishing this alternative branch of the conversation.\n\n\"alternative\\_approach\", \"retry\\_attempt\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fromMessageId",
          "description": "Identifier of the message from which the conversation branch diverged.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messageIds",
          "description": "Message identifiers associated with this conversation branch.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Reason, labels, and quality metadata for this conversation branch.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isActive",
          "description": "Whether this conversation branch is marked active.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ConversationBranchInput",
      "title": "ConversationBranch",
      "slug": "/api/models/schema-q7hl8fcm9r-input",
      "description": "Conversation branching",
      "semantics": "Conversation branching",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ConversationBranch",
        "slug": "/api/models/schema-q7hl8fcm9r"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/626klhca0u"
      ],
      "fields": [
        {
          "name": "branchId",
          "description": "Identifier of the conversation branch.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "branchName",
          "description": "Name distinguishing this alternative branch of the conversation.\n\n\"alternative\\_approach\", \"retry\\_attempt\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fromMessageId",
          "description": "Identifier of the message from which the conversation branch diverged.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messageIds",
          "description": "Message identifiers associated with this conversation branch.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Reason, labels, and quality metadata for this conversation branch.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isActive",
          "description": "Whether this conversation branch is marked active.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ConversationSettings",
      "title": "ConversationSettings",
      "slug": "/api/models/schema-ph6avse89k",
      "description": "Conversation-level settings controlling behavior across sends\n\n[`maxLoops`](/api/models/schema-ph6avse89k#request-field-maxloops) caps the **total number of generations** in a run — not the number of tool round trips. Default is **2**, which is what one round trip costs: a first generation to emit the tool call, a second to synthesize its result.\n\nOn the final generation the model is sent **no tools at all** (the request omits the [`tools`](/api/models/schema-1h82h7ri5p#request-field-tools) array), so it cannot emit a call there. `maxLoops: 1` therefore means a single tool-free reply — a valid way to ask for one, but not a way to get one tool round trip.",
      "semantics": "Conversation-level settings controlling behavior across sends\n\n[`maxLoops`](/api/models/schema-ph6avse89k#request-field-maxloops) caps the **total number of generations** in a run — not the number of tool round trips. Default is **2**, which is what one round trip costs: a first generation to emit the tool call, a second to synthesize its result.\n\nOn the final generation the model is sent **no tools at all** (the request omits the [`tools`](/api/models/schema-1h82h7ri5p#request-field-tools) array), so it cannot emit a call there. `maxLoops: 1` therefore means a single tool-free reply — a valid way to ask for one, but not a way to get one tool round trip.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ConversationSettings",
        "slug": "/api/models/schema-ph6avse89k"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:getConversationState",
        "conversations:updatePromptVariables",
        "conversations:updateSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "interruptPolicy",
          "description": "Policy for an incoming message while another generation run is active.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxLoops",
          "description": "Default limit on agentic generation loops for the conversation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxParallelTools",
          "description": "Maximum number of tool executions allowed concurrently by this configuration.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "mcpServers",
          "description": "MCP servers available to this conversation; used for tool discovery/filtering",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolPolicy",
          "description": "Optional per-conversation tool execution policy applied to AgentConfig",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promptVariables",
          "description": "Typed values used when rendering profile prompt templates. Numbers, arrays, Boolean values and strings retain their respective JSON types. The values are shared by profiles in the conversation and can be refreshed with UpdatePromptVariables. Switching profiles renders the new template with the same values.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ConversationSettingsInput",
      "title": "ConversationSettings",
      "slug": "/api/models/schema-ph6avse89k-input",
      "description": "Conversation-level settings controlling behavior across sends\n\n[`maxLoops`](/api/models/schema-ph6avse89k#request-field-maxloops) caps the **total number of generations** in a run — not the number of tool round trips. Default is **2**, which is what one round trip costs: a first generation to emit the tool call, a second to synthesize its result.\n\nOn the final generation the model is sent **no tools at all** (the request omits the [`tools`](/api/models/schema-1h82h7ri5p#request-field-tools) array), so it cannot emit a call there. `maxLoops: 1` therefore means a single tool-free reply — a valid way to ask for one, but not a way to get one tool round trip.",
      "semantics": "Conversation-level settings controlling behavior across sends\n\n[`maxLoops`](/api/models/schema-ph6avse89k#request-field-maxloops) caps the **total number of generations** in a run — not the number of tool round trips. Default is **2**, which is what one round trip costs: a first generation to emit the tool call, a second to synthesize its result.\n\nOn the final generation the model is sent **no tools at all** (the request omits the [`tools`](/api/models/schema-1h82h7ri5p#request-field-tools) array), so it cannot emit a call there. `maxLoops: 1` therefore means a single tool-free reply — a valid way to ask for one, but not a way to get one tool round trip.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ConversationSettings",
        "slug": "/api/models/schema-ph6avse89k"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createThread",
        "conversations:updateSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "interruptPolicy",
          "description": "Policy for an incoming message while another generation run is active.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxLoops",
          "description": "Default limit on agentic generation loops for the conversation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxParallelTools",
          "description": "Maximum number of tool executions allowed concurrently by this configuration.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "mcpServers",
          "description": "MCP servers available to this conversation; used for tool discovery/filtering",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolPolicy",
          "description": "Optional per-conversation tool execution policy applied to AgentConfig",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promptVariables",
          "description": "Typed values used when rendering profile prompt templates. Numbers, arrays, Boolean values and strings retain their respective JSON types. The values are shared by profiles in the conversation and can be refreshed with UpdatePromptVariables. Switching profiles renders the new template with the same values.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ConversationThread",
      "title": "ConversationThread",
      "slug": "/api/models/schema-1i84dsgmg6",
      "description": "Lightweight conversation-thread registry record used for managing multiple threads.",
      "semantics": "Lightweight conversation-thread registry record used for managing multiple threads.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ConversationThread",
        "slug": "/api/models/schema-1i84dsgmg6"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createThread"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "threadId",
          "description": "Identifier of the conversation thread.\n\nkey used for ConversationActorService",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "title",
          "description": "Display title of the conversation thread.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Labels associated with the resource for organization or filtering.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Caller-supplied identifier associated with the conversation thread.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_CostDetails",
      "title": "CostDetails",
      "slug": "/api/models/schema-1ia0h761lm",
      "description": "Breakdown of model-provider cost. When the customer supplies the provider key, usage.cost is zero and upstream\\_inference\\_cost reports the provider spend, split into prompt and completion components.",
      "semantics": "Breakdown of model-provider cost. When the customer supplies the provider key, usage.cost is zero and upstream\\_inference\\_cost reports the provider spend, split into prompt and completion components.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "CostDetails",
        "slug": "/api/models/schema-1ia0h761lm"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "upstreamInferenceCost",
          "description": "Total upstream provider cost (USD) on BYOK routes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "upstreamInferencePromptCost",
          "description": "Upstream cost attributed to prompt tokens (USD).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "upstreamInferenceCompletionCost",
          "description": "Upstream cost attributed to completion tokens (USD).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_CostDetailsInput",
      "title": "CostDetails",
      "slug": "/api/models/schema-1ia0h761lm-input",
      "description": "Breakdown of model-provider cost. When the customer supplies the provider key, usage.cost is zero and upstream\\_inference\\_cost reports the provider spend, split into prompt and completion components.",
      "semantics": "Breakdown of model-provider cost. When the customer supplies the provider key, usage.cost is zero and upstream\\_inference\\_cost reports the provider spend, split into prompt and completion components.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "CostDetails",
        "slug": "/api/models/schema-1ia0h761lm"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "upstreamInferenceCost",
          "description": "Total upstream provider cost (USD) on BYOK routes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "upstreamInferencePromptCost",
          "description": "Upstream cost attributed to prompt tokens (USD).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "upstreamInferenceCompletionCost",
          "description": "Upstream cost attributed to completion tokens (USD).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_EmbeddingConfig",
      "title": "EmbeddingConfig",
      "slug": "/api/models/schema-q81ihe4v3e",
      "description": "Generic embedding configuration for embedding-assisted upserts",
      "semantics": "Generic embedding configuration for embedding-assisted upserts",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "EmbeddingConfig",
        "slug": "/api/models/schema-q81ihe4v3e"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6v7cprckcj"
      ],
      "fields": [
        {
          "name": "provider",
          "description": "Provider used to generate embeddings for the input text.\n\ne.g., \"openrouter\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "model",
          "description": "Embedding model used to convert input text into vectors.\n\ne.g., \"openai/text-embedding-3-large\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "options",
          "description": "Provider-specific options.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_EmbeddingConfigInput",
      "title": "EmbeddingConfig",
      "slug": "/api/models/schema-q81ihe4v3e-input",
      "description": "Generic embedding configuration for embedding-assisted upserts",
      "semantics": "Generic embedding configuration for embedding-assisted upserts",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "EmbeddingConfig",
        "slug": "/api/models/schema-q81ihe4v3e"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6v7cprckcj"
      ],
      "fields": [
        {
          "name": "provider",
          "description": "Provider used to generate embeddings for the input text.\n\ne.g., \"openrouter\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "model",
          "description": "Embedding model used to convert input text into vectors.\n\ne.g., \"openai/text-embedding-3-large\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "options",
          "description": "Provider-specific options.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ExperimentContext",
      "title": "ExperimentContext",
      "slug": "/api/models/schema-1icbr3lltu",
      "description": "Dataset-run attribution attached when a scripted evaluation turn is sent. Supported on SendMessageRequest and SendMessageSyncRequest; ordinary conversation traffic leaves it unset.\n\nThe attribution must accompany the turn so its observations can be associated with the dataset run; a separate post-run link does not supply this attribution. The dataset is required when experiment context is supplied.\n\nThis attribution is separate from client\\_context, which is included in model prompt context. Do not place evaluation attribution in prompt context.\n\ndataset\\_item\\_id is optional: a run can be scored from its traces without assigning each turn to a dataset item. profile\\_revision\\_hash supplies a profile revision fingerprint for comparison and attribution.",
      "semantics": "Dataset-run attribution attached when a scripted evaluation turn is sent. Supported on SendMessageRequest and SendMessageSyncRequest; ordinary conversation traffic leaves it unset.\n\nThe attribution must accompany the turn so its observations can be associated with the dataset run; a separate post-run link does not supply this attribution. The dataset is required when experiment context is supplied.\n\nThis attribution is separate from client\\_context, which is included in model prompt context. Do not place evaluation attribution in prompt context.\n\ndataset\\_item\\_id is optional: a run can be scored from its traces without assigning each turn to a dataset item. profile\\_revision\\_hash supplies a profile revision fingerprint for comparison and attribution.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ExperimentContext",
        "slug": "/api/models/schema-1icbr3lltu"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "datasetId",
          "description": "Identifier of the dataset to which this run belongs. Required whenever experiment context is supplied.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "runName",
          "description": "Names the run. Repeating a run\\_name for the same dataset appends to that run rather than starting a new one, because the derived experiment id is deterministic — the same property that lets a retried turn land in the run it belongs to.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "datasetItemId",
          "description": "Which dataset item this turn exercises. Optional: a run can be scored on its traces alone, and a harness that does not model items per-turn can leave it empty.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Free-text description displayed with the dataset run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional run metadata serialized as a JSON object string and carried through unchanged.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileRevisionHash",
          "description": "Profile revision fingerprint attached to the dataset run for comparison and attribution.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_FileResolutionConfig",
      "title": "FileResolutionConfig",
      "slug": "/api/models/schema-1ftcunpmha",
      "description": "Configuration for resolving CONTENT\\_PART\\_TYPE\\_FILE\\_ID parts to fresh signed URLs before requests are sent to LLM providers. Keeps stable file references in message history while generating ephemeral URLs only when needed.\n\nOmitting the file-resolution failure mode uses `FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT`, which silently drops an unresolvable part. A resolved URL can also expire before a later attempt; a fresh URL on every attempt is not guaranteed. With `FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION`, an unresolvable required part fails the run before the provider call. This can happen after asynchronous send acceptance; inspect the correlated run outcome rather than expecting the initial HTTP response to report the later failure. Verify that the report was actually available before presenting its summary.",
      "semantics": "Configuration for resolving CONTENT\\_PART\\_TYPE\\_FILE\\_ID parts to fresh signed URLs before requests are sent to LLM providers. Keeps stable file references in message history while generating ephemeral URLs only when needed.\n\nOmitting the file-resolution failure mode uses `FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT`, which silently drops an unresolvable part. A resolved URL can also expire before a later attempt; a fresh URL on every attempt is not guaranteed. With `FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION`, an unresolvable required part fails the run before the provider call. This can happen after asynchronous send acceptance; inspect the correlated run outcome rather than expecting the initial HTTP response to report the later failure. Verify that the report was actually available before presenting its summary.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "FileResolutionConfig",
        "slug": "/api/models/schema-1ftcunpmha"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "failureMode",
          "description": "Action to take when a file cannot be resolved. If omitted, skip unresolved file content and use the remaining content.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_FileResolutionConfigInput",
      "title": "FileResolutionConfig",
      "slug": "/api/models/schema-1ftcunpmha-input",
      "description": "Configuration for resolving CONTENT\\_PART\\_TYPE\\_FILE\\_ID parts to fresh signed URLs before requests are sent to LLM providers. Keeps stable file references in message history while generating ephemeral URLs only when needed.\n\nOmitting the file-resolution failure mode uses `FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT`, which silently drops an unresolvable part. A resolved URL can also expire before a later attempt; a fresh URL on every attempt is not guaranteed. With `FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION`, an unresolvable required part fails the run before the provider call. This can happen after asynchronous send acceptance; inspect the correlated run outcome rather than expecting the initial HTTP response to report the later failure. Verify that the report was actually available before presenting its summary.",
      "semantics": "Configuration for resolving CONTENT\\_PART\\_TYPE\\_FILE\\_ID parts to fresh signed URLs before requests are sent to LLM providers. Keeps stable file references in message history while generating ephemeral URLs only when needed.\n\nOmitting the file-resolution failure mode uses `FILE_RESOLUTION_FAILURE_MODE_SKIP_CONTENT`, which silently drops an unresolvable part. A resolved URL can also expire before a later attempt; a fresh URL on every attempt is not guaranteed. With `FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION`, an unresolvable required part fails the run before the provider call. This can happen after asynchronous send acceptance; inspect the correlated run outcome rather than expecting the initial HTTP response to report the later failure. Verify that the report was actually available before presenting its summary.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "FileResolutionConfig",
        "slug": "/api/models/schema-1ftcunpmha"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "failureMode",
          "description": "Action to take when a file cannot be resolved. If omitted, skip unresolved file content and use the remaining content.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig",
      "title": "GenerationConfig",
      "slug": "/api/models/schema-1h82h7ri5p",
      "description": "Canonical generation configuration\n\nSet the language preference to a BCP-47 tag (for example, `\"fr\"` or `\"pt-BR\"`). The platform injects a `\"Respond only in [language]\"` instruction into **every** LLM call for this conversation. The instruction is not persisted to history.\n\nSee [Generation configuration](/api/model-controls/configuration) for how settings combine across scopes.",
      "semantics": "Canonical generation configuration\n\nSet the language preference to a BCP-47 tag (for example, `\"fr\"` or `\"pt-BR\"`). The platform injects a `\"Respond only in [language]\"` instruction into **every** LLM call for this conversation. The instruction is not persisted to history.\n\nSee [Generation configuration](/api/model-controls/configuration) for how settings combine across scopes.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "GenerationConfig",
        "slug": "/api/models/schema-1h82h7ri5p"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "model",
          "description": "Primary model identifier requested for generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "models",
          "description": "Candidate models for routing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "systemPrompt",
          "description": "Optional system prompt prepended as a system message. An explicitly empty value in a per-call override clears the base prompt.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modelRoutingFilter",
          "description": "Optional metadata-based model routing filter. When set, candidate models are filtered by these criteria before routing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "provider",
          "description": "Provider/multi-provider routing preferences",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "reasoning",
          "description": "Reasoning effort and output options passed to the model provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usage",
          "description": "Token and cost accounting associated with the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transforms",
          "description": "Provider transformations requested for the generation input.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tools",
          "description": "Tool definitions exposed to the model for server-side execution.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolChoice",
          "description": "Policy controlling whether and which tool the model may call.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientTools",
          "description": "Client-side tools that should be exposed to the model but executed by the client (not the workflow/MCP)",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolPolicy",
          "description": "Per-run tool execution policy (approvals, ordering, limits, retries, timeouts)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "temperature",
          "description": "Sampling temperature, from 0.0 to 2.0. Omission inherits the base configuration or provider default; an explicitly supplied zero remains an override.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topP",
          "description": "Cumulative token-probability cutoff used for nucleus sampling, from 0.0 through 1.0.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxOutputTokens",
          "description": "Maximum output-token count requested from the model provider; corresponds to max\\_tokens in provider requests.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "frequencyPenalty",
          "description": "Sampling penalty applied to tokens according to their prior frequency.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "presencePenalty",
          "description": "Sampling penalty applied to tokens already present in generated content.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stopSequences",
          "description": "Token sequences at which the model should stop generation.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "seed",
          "description": "Deterministic control where supported.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "responseFormat",
          "description": "Structured-output format and schema requested for the model response.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowParallelToolCalls",
          "description": "Allow the model to issue multiple tool calls in parallel where supported",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topK",
          "description": "Maximum number of candidate next tokens considered by providers that support top-k sampling.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "repetitionPenalty",
          "description": "Provider sampling penalty used to discourage repeated output.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "logitBias",
          "description": "Per-token adjustments applied to the provider token-selection logits.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topLogprobs",
          "description": "Number of top token log probabilities requested from the provider.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "minP",
          "description": "Minimum relative token probability used by supported sampling providers.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topA",
          "description": "Adaptive probability cutoff used by supported sampling providers.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "user",
          "description": "User identifier forwarded for provider-side request attribution.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modalities",
          "description": "Output modalities (e.g., \\[TEXT, IMAGE])",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "plugins",
          "description": "Provider plugins requested for pre-processing or post-processing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "languagePreference",
          "description": "Language preference (BCP-47), e.g., \"en-US\", \"es-ES\" (presence-aware)",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timeAware",
          "description": "Time-aware generation options (current time, message timestamps, file timestamps)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "turnContext",
          "description": "Turn context configuration for turn-aware generation",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "mem0",
          "description": "Configuration for semantic memory search, context injection and extraction during generation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requestTimeoutSeconds",
          "description": "Timeout for an individual model-provider request, in seconds. Zero selects the 30-second default; other values are clamped to the range 1–600.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fileResolution",
          "description": "Configuration for resolving FILE\\_ID content parts to fresh signed URLs before calling a model provider. When unset, unresolved content is skipped.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clearTools",
          "description": "Set to true with an empty tools list in an override to clear inherited tools. An empty list alone inherits the base tools. This directive applies only when merging an override.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clearClientTools",
          "description": "Set to true with an empty client tools list in an override to clear inherited client tools for that turn. An empty list alone inherits the base client tools, and a nonempty list replaces them regardless of this directive. It applies only when merging an override and leaves server tool selection unchanged.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig_PluginConfig",
      "title": "PluginConfig",
      "slug": "/api/models/schema-1g5jvg1icc",
      "description": "Provider plugin identifier and its parser, search, or additional configuration.",
      "semantics": "Provider plugin identifier and its parser, search, or additional configuration.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PluginConfig",
        "slug": "/api/models/schema-1g5jvg1icc"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Provider plugin identifier, such as file-parser.\n\ne.g., \"file-parser\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pdf",
          "description": "PDF annotation or parser configuration selected by the enclosing message.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "web",
          "description": "Web-search configuration for the selected generation plugin.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "params",
          "description": "Additional provider-specific plugin parameters.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig_PluginConfigInput",
      "title": "PluginConfig",
      "slug": "/api/models/schema-1g5jvg1icc-input",
      "description": "Provider plugin identifier and its parser, search, or additional configuration.",
      "semantics": "Provider plugin identifier and its parser, search, or additional configuration.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PluginConfig",
        "slug": "/api/models/schema-1g5jvg1icc"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Provider plugin identifier, such as file-parser.\n\ne.g., \"file-parser\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pdf",
          "description": "PDF annotation or parser configuration selected by the enclosing message.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "web",
          "description": "Web-search configuration for the selected generation plugin.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "params",
          "description": "Additional provider-specific plugin parameters.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig_PluginPDFConfig",
      "title": "PluginPDFConfig",
      "slug": "/api/models/schema-1fvi4j1t0d",
      "description": "Plugins for pre/post-processing (generic representation)",
      "semantics": "Plugins for pre/post-processing (generic representation)",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PluginPDFConfig",
        "slug": "/api/models/schema-1fvi4j1t0d"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "engine",
          "description": "PDF parsing engine selected for the provider plugin.\n\n\"pdf-text\", \"mistral-ocr\", or \"native\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig_PluginPDFConfigInput",
      "title": "PluginPDFConfig",
      "slug": "/api/models/schema-1fvi4j1t0d-input",
      "description": "Plugins for pre/post-processing (generic representation)",
      "semantics": "Plugins for pre/post-processing (generic representation)",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PluginPDFConfig",
        "slug": "/api/models/schema-1fvi4j1t0d"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "engine",
          "description": "PDF parsing engine selected for the provider plugin.\n\n\"pdf-text\", \"mistral-ocr\", or \"native\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig_PluginWebConfig",
      "title": "PluginWebConfig",
      "slug": "/api/models/schema-1g3q0m5uun",
      "description": "Provider web-search configuration used to augment a generation request.",
      "semantics": "Provider web-search configuration used to augment a generation request.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PluginWebConfig",
        "slug": "/api/models/schema-1g3q0m5uun"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "engine",
          "description": "Search engine selected for the provider’s web-search plugin.\n\ne.g., native/exa",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxResults",
          "description": "Maximum web-search result count requested by the plugin.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "searchPrompt",
          "description": "Instructions supplied to the web-search plugin.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "webSearchOptions",
          "description": "Options controlling the amount of web-search context requested.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig_PluginWebConfig_WebSearchOptions",
      "title": "WebSearchOptions",
      "slug": "/api/models/schema-1g1r4lmi7m",
      "description": "Amount of web-search context requested for generation.",
      "semantics": "Amount of web-search context requested for generation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "WebSearchOptions",
        "slug": "/api/models/schema-1g1r4lmi7m"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "searchContextSize",
          "description": "Requested amount of web-search context: low, medium, or high.\n\n\"low\" | \"medium\" | \"high\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig_PluginWebConfig_WebSearchOptionsInput",
      "title": "WebSearchOptions",
      "slug": "/api/models/schema-1g1r4lmi7m-input",
      "description": "Amount of web-search context requested for generation.",
      "semantics": "Amount of web-search context requested for generation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "WebSearchOptions",
        "slug": "/api/models/schema-1g1r4lmi7m"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "searchContextSize",
          "description": "Requested amount of web-search context: low, medium, or high.\n\n\"low\" | \"medium\" | \"high\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig_PluginWebConfigInput",
      "title": "PluginWebConfig",
      "slug": "/api/models/schema-1g3q0m5uun-input",
      "description": "Provider web-search configuration used to augment a generation request.",
      "semantics": "Provider web-search configuration used to augment a generation request.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PluginWebConfig",
        "slug": "/api/models/schema-1g3q0m5uun"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "engine",
          "description": "Search engine selected for the provider’s web-search plugin.\n\ne.g., native/exa",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxResults",
          "description": "Maximum web-search result count requested by the plugin.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "searchPrompt",
          "description": "Instructions supplied to the web-search plugin.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "webSearchOptions",
          "description": "Options controlling the amount of web-search context requested.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig_ResponseFormat",
      "title": "ResponseFormat",
      "slug": "/api/models/schema-1g69v4vltg",
      "description": "Structured response control\n\nWhen a schema is set, current server validation defaults to enabled unless explicitly disabled. An explicit retry count of zero disables validation retries; omission defaults to one. A retry can incur another model attempt and cost. A schema name is a label, not an immutable schema version.",
      "semantics": "Structured response control\n\nWhen a schema is set, current server validation defaults to enabled unless explicitly disabled. An explicit retry count of zero disables validation retries; omission defaults to one. A retry can incur another model attempt and cost. A schema name is a label, not an immutable schema version.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ResponseFormat",
        "slug": "/api/models/schema-1g69v4vltg"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "jsonObject",
          "description": "Whether the model provider is requested to return a valid JSON object.\n\nenforce valid JSON object",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "jsonSchema",
          "description": "JSON Schema describing the requested structured model output.\n\noptional JSON Schema (draft-07+)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "schemaName",
          "description": "Human-readable name of the structured-output schema, included in structured-message metadata and in the provider request’s json\\_schema.name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "validate",
          "description": "Enable server-side validation of the response against json\\_schema. Default: true when json\\_schema is set (applied in Go when not explicitly set).",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxValidationRetries",
          "description": "Maximum retries when server-side validation fails. Default: 1 when not set. Set to 0 to disable retry (fail immediately on invalid output).",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "responseHealing",
          "description": "Enable response healing for structured JSON output. Defaults to enabled for non-streaming requests with json\\_schema unless explicitly disabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfig_ResponseFormatInput",
      "title": "ResponseFormat",
      "slug": "/api/models/schema-1g69v4vltg-input",
      "description": "Structured response control\n\nWhen a schema is set, current server validation defaults to enabled unless explicitly disabled. An explicit retry count of zero disables validation retries; omission defaults to one. A retry can incur another model attempt and cost. A schema name is a label, not an immutable schema version.",
      "semantics": "Structured response control\n\nWhen a schema is set, current server validation defaults to enabled unless explicitly disabled. An explicit retry count of zero disables validation retries; omission defaults to one. A retry can incur another model attempt and cost. A schema name is a label, not an immutable schema version.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ResponseFormat",
        "slug": "/api/models/schema-1g69v4vltg"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "jsonObject",
          "description": "Whether the model provider is requested to return a valid JSON object.\n\nenforce valid JSON object",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "jsonSchema",
          "description": "JSON Schema describing the requested structured model output.\n\noptional JSON Schema (draft-07+)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "schemaName",
          "description": "Human-readable name of the structured-output schema, included in structured-message metadata and in the provider request’s json\\_schema.name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "validate",
          "description": "Enable server-side validation of the response against json\\_schema. Default: true when json\\_schema is set (applied in Go when not explicitly set).",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxValidationRetries",
          "description": "Maximum retries when server-side validation fails. Default: 1 when not set. Set to 0 to disable retry (fail immediately on invalid output).",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "responseHealing",
          "description": "Enable response healing for structured JSON output. Defaults to enabled for non-streaming requests with json\\_schema unless explicitly disabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationConfigInput",
      "title": "GenerationConfig",
      "slug": "/api/models/schema-1h82h7ri5p-input",
      "description": "Canonical generation configuration\n\nSet the language preference to a BCP-47 tag (for example, `\"fr\"` or `\"pt-BR\"`). The platform injects a `\"Respond only in [language]\"` instruction into **every** LLM call for this conversation. The instruction is not persisted to history.\n\nSee [Generation configuration](/api/model-controls/configuration) for how settings combine across scopes.",
      "semantics": "Canonical generation configuration\n\nSet the language preference to a BCP-47 tag (for example, `\"fr\"` or `\"pt-BR\"`). The platform injects a `\"Respond only in [language]\"` instruction into **every** LLM call for this conversation. The instruction is not persisted to history.\n\nSee [Generation configuration](/api/model-controls/configuration) for how settings combine across scopes.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "GenerationConfig",
        "slug": "/api/models/schema-1h82h7ri5p"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "model",
          "description": "Primary model identifier requested for generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "models",
          "description": "Candidate models for routing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "systemPrompt",
          "description": "Optional system prompt prepended as a system message. An explicitly empty value in a per-call override clears the base prompt.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modelRoutingFilter",
          "description": "Optional metadata-based model routing filter. When set, candidate models are filtered by these criteria before routing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "provider",
          "description": "Provider/multi-provider routing preferences",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "reasoning",
          "description": "Reasoning effort and output options passed to the model provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usage",
          "description": "Token and cost accounting associated with the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transforms",
          "description": "Provider transformations requested for the generation input.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tools",
          "description": "Tool definitions exposed to the model for server-side execution.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolChoice",
          "description": "Policy controlling whether and which tool the model may call.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientTools",
          "description": "Client-side tools that should be exposed to the model but executed by the client (not the workflow/MCP)",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolPolicy",
          "description": "Per-run tool execution policy (approvals, ordering, limits, retries, timeouts)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "temperature",
          "description": "Sampling temperature, from 0.0 to 2.0. Omission inherits the base configuration or provider default; an explicitly supplied zero remains an override.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topP",
          "description": "Cumulative token-probability cutoff used for nucleus sampling, from 0.0 through 1.0.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxOutputTokens",
          "description": "Maximum output-token count requested from the model provider; corresponds to max\\_tokens in provider requests.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "frequencyPenalty",
          "description": "Sampling penalty applied to tokens according to their prior frequency.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "presencePenalty",
          "description": "Sampling penalty applied to tokens already present in generated content.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stopSequences",
          "description": "Token sequences at which the model should stop generation.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "seed",
          "description": "Deterministic control where supported.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "responseFormat",
          "description": "Structured-output format and schema requested for the model response.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowParallelToolCalls",
          "description": "Allow the model to issue multiple tool calls in parallel where supported",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topK",
          "description": "Maximum number of candidate next tokens considered by providers that support top-k sampling.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "repetitionPenalty",
          "description": "Provider sampling penalty used to discourage repeated output.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "logitBias",
          "description": "Per-token adjustments applied to the provider token-selection logits.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topLogprobs",
          "description": "Number of top token log probabilities requested from the provider.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "minP",
          "description": "Minimum relative token probability used by supported sampling providers.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topA",
          "description": "Adaptive probability cutoff used by supported sampling providers.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "user",
          "description": "User identifier forwarded for provider-side request attribution.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modalities",
          "description": "Output modalities (e.g., \\[TEXT, IMAGE])",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "plugins",
          "description": "Provider plugins requested for pre-processing or post-processing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "languagePreference",
          "description": "Language preference (BCP-47), e.g., \"en-US\", \"es-ES\" (presence-aware)",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timeAware",
          "description": "Time-aware generation options (current time, message timestamps, file timestamps)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "turnContext",
          "description": "Turn context configuration for turn-aware generation",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "mem0",
          "description": "Configuration for semantic memory search, context injection and extraction during generation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requestTimeoutSeconds",
          "description": "Timeout for an individual model-provider request, in seconds. Zero selects the 30-second default; other values are clamped to the range 1–600.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fileResolution",
          "description": "Configuration for resolving FILE\\_ID content parts to fresh signed URLs before calling a model provider. When unset, unresolved content is skipped.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clearTools",
          "description": "Set to true with an empty tools list in an override to clear inherited tools. An empty list alone inherits the base tools. This directive applies only when merging an override.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clearClientTools",
          "description": "Set to true with an empty client tools list in an override to clear inherited client tools for that turn. An empty list alone inherits the base client tools, and a nonempty list replaces them regardless of this directive. It applies only when merging an override and leaves server tool selection unchanged.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationContext",
      "title": "GenerationContext",
      "slug": "/api/models/schema-1im79fphmq",
      "description": "Snapshot of retrieval inputs, prompt provenance, and turn position that shaped a generated message.",
      "semantics": "Snapshot of retrieval inputs, prompt provenance, and turn position that shaped a generated message.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "GenerationContext",
        "slug": "/api/models/schema-1im79fphmq"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "memories",
          "description": "Memory records captured in the generation context.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "relations",
          "description": "Graph relationships captured in the generation context.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "memorySearch",
          "description": "Memory-query parameters and counts recorded for this generation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "turn",
          "description": "Turn position and limit within the generation run.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "languagePreference",
          "description": "Language preference associated with the generation context.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resolvedSystemPrompt",
          "description": "System prompt selected for this generation after prompt precedence is resolved. This field is retained in the schema but is not populated; use resolved\\_prompt\\_hash for recorded prompt identity.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Agent profile that produced this message (\"\" if none active).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "model",
          "description": "Model actually used for this generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promptSource",
          "description": "Which precedence tier supplied the prompt.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "baseConfig",
          "description": "Generation configuration resolved at send time before per-call overrides and timeout adjustments, with system\\_prompt omitted. The active profile supplies the base when selected; otherwise the conversation default does. Use prompt\\_source and profile\\_id for prompt attribution. The base configuration can be absent when neither source supplies one or no snapshot was captured.\n\nFor a supplied per-call override, the populated top-level fields of override\\_config overlay base\\_config to form the effective configuration. override\\_config can be absent when no override was supplied.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "overrideConfig",
          "description": "Per-call generation configuration supplied before the override merge.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileVersion",
          "description": "Immutable version of the active agent profile used to render this turn’s prompt. Absent on older turns and turns without a profile template.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fragmentsVersion",
          "description": "Version of the prompt-fragment set used to render the profile prompt.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promptVariables",
          "description": "Values bound to the prompt template for this generation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileRenderFailed",
          "description": "Whether rendering the profile prompt failed for this generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resolvedPromptHash",
          "description": "SHA-256 hash, as 64 hexadecimal characters, of the resolved system prompt before the current-time instruction is appended. Identifies prompt content only, excluding model and sampling parameters. Absent on older turns without prompt capture.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resolvedUserContext",
          "description": "The literal user-context text supplied to the model for this turn, including the available name, locale and location conditions. It is a captured prompt input, not a reconstruction from the user’s current profile.\n\nThe value is computed once per turn and reused across its model calls. It can be empty when location context is unavailable, enrichment fails or the turn predates capture.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resolvedMcpServers",
          "description": "The MCP server list used for this turn after resolving conversation settings, the active profile, and any per-turn `override_mcp_servers`. It determines both tool discovery and the allow/block rules applied by `CallTool`.\n\nA per-turn override does not change the conversation's stored MCP settings. Compare this snapshot with `settings.mcp_servers` to inspect how the turn's tool set differed.\n\nEmpty on turns predating capture and on threads with no MCP servers.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_GenerationContextInput",
      "title": "GenerationContext",
      "slug": "/api/models/schema-1im79fphmq-input",
      "description": "Snapshot of retrieval inputs, prompt provenance, and turn position that shaped a generated message.",
      "semantics": "Snapshot of retrieval inputs, prompt provenance, and turn position that shaped a generated message.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "GenerationContext",
        "slug": "/api/models/schema-1im79fphmq"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "memories",
          "description": "Memory records captured in the generation context.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "relations",
          "description": "Graph relationships captured in the generation context.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "memorySearch",
          "description": "Memory-query parameters and counts recorded for this generation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "turn",
          "description": "Turn position and limit within the generation run.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "languagePreference",
          "description": "Language preference associated with the generation context.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resolvedSystemPrompt",
          "description": "System prompt selected for this generation after prompt precedence is resolved. This field is retained in the schema but is not populated; use resolved\\_prompt\\_hash for recorded prompt identity.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Agent profile that produced this message (\"\" if none active).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "model",
          "description": "Model actually used for this generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promptSource",
          "description": "Which precedence tier supplied the prompt.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "baseConfig",
          "description": "Generation configuration resolved at send time before per-call overrides and timeout adjustments, with system\\_prompt omitted. The active profile supplies the base when selected; otherwise the conversation default does. Use prompt\\_source and profile\\_id for prompt attribution. The base configuration can be absent when neither source supplies one or no snapshot was captured.\n\nFor a supplied per-call override, the populated top-level fields of override\\_config overlay base\\_config to form the effective configuration. override\\_config can be absent when no override was supplied.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "overrideConfig",
          "description": "Per-call generation configuration supplied before the override merge.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileVersion",
          "description": "Immutable version of the active agent profile used to render this turn’s prompt. Absent on older turns and turns without a profile template.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fragmentsVersion",
          "description": "Version of the prompt-fragment set used to render the profile prompt.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promptVariables",
          "description": "Values bound to the prompt template for this generation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileRenderFailed",
          "description": "Whether rendering the profile prompt failed for this generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resolvedPromptHash",
          "description": "SHA-256 hash, as 64 hexadecimal characters, of the resolved system prompt before the current-time instruction is appended. Identifies prompt content only, excluding model and sampling parameters. Absent on older turns without prompt capture.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resolvedUserContext",
          "description": "The literal user-context text supplied to the model for this turn, including the available name, locale and location conditions. It is a captured prompt input, not a reconstruction from the user’s current profile.\n\nThe value is computed once per turn and reused across its model calls. It can be empty when location context is unavailable, enrichment fails or the turn predates capture.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resolvedMcpServers",
          "description": "The MCP server list used for this turn after resolving conversation settings, the active profile, and any per-turn `override_mcp_servers`. It determines both tool discovery and the allow/block rules applied by `CallTool`.\n\nA per-turn override does not change the conversation's stored MCP settings. Compare this snapshot with `settings.mcp_servers` to inspect how the turn's tool set differed.\n\nEmpty on turns predating capture and on threads with no MCP servers.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_LLMGenerationCompletedEvent",
      "title": "LLMGenerationCompletedEvent",
      "slug": "/api/models/schema-pntuu08p80",
      "description": "Event emitted when a generation run reaches a terminal state. The event context identifies the associated conversation.",
      "semantics": "Event emitted when a generation run reaches a terminal state. The event context identifies the associated conversation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "LLMGenerationCompletedEvent",
        "slug": "/api/models/schema-pntuu08p80"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "runId",
          "description": "Unique identifier for the workflow run",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Terminal status of the run",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "loopCount",
          "description": "Number of agent loops/steps executed",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "durationMs",
          "description": "End-to-end run duration in milliseconds",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usage",
          "description": "Optional usage accounting for the run",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Structured error for FAILED/TIMED\\_OUT/CANCELED runs.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usageByModel",
          "description": "Per-model breakdown of the same usage `usage` aggregates. Additive: `usage` stays the run-level total so existing consumers are unaffected, while billing keys its charges on model. Empty when the producer predates it.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "turnKey",
          "description": "Identifies the conversation turn this run served: the `message_id` of the opening user message. Messages produced by the run carry the same value as `source_user_message_id`.\n\nTo derive the corresponding evaluation trace ID, trim surrounding whitespace from the turn key and the event context's `caller_key` and `correlation_id`. Let `conv_id` be the trimmed caller key, falling back to the trimmed correlation ID when the caller key is empty. Compute SHA-256 over `\"trace|\" + conv_id + \"|msg:\" + turn_key` using the trimmed turn key and use the first 16 digest bytes, represented as 32 hexadecimal characters. The literal `msg:` is part of this derivation, not part of `turn_key`.\n\nThis identifies the trace when it has been ingested; the generation-completed event does not itself create an evaluation trace.\n\nAn empty key means no turn attribution, including turns recorded before this field was available or whose opening message could not be resolved. Do not invent a key for those turns.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_LLMGenerationCompletedEventInput",
      "title": "LLMGenerationCompletedEvent",
      "slug": "/api/models/schema-pntuu08p80-input",
      "description": "Event emitted when a generation run reaches a terminal state. The event context identifies the associated conversation.",
      "semantics": "Event emitted when a generation run reaches a terminal state. The event context identifies the associated conversation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "LLMGenerationCompletedEvent",
        "slug": "/api/models/schema-pntuu08p80"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "runId",
          "description": "Unique identifier for the workflow run",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Terminal status of the run",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "loopCount",
          "description": "Number of agent loops/steps executed",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "durationMs",
          "description": "End-to-end run duration in milliseconds",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usage",
          "description": "Optional usage accounting for the run",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Structured error for FAILED/TIMED\\_OUT/CANCELED runs.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usageByModel",
          "description": "Per-model breakdown of the same usage `usage` aggregates. Additive: `usage` stays the run-level total so existing consumers are unaffected, while billing keys its charges on model. Empty when the producer predates it.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "turnKey",
          "description": "Identifies the conversation turn this run served: the `message_id` of the opening user message. Messages produced by the run carry the same value as `source_user_message_id`.\n\nTo derive the corresponding evaluation trace ID, trim surrounding whitespace from the turn key and the event context's `caller_key` and `correlation_id`. Let `conv_id` be the trimmed caller key, falling back to the trimmed correlation ID when the caller key is empty. Compute SHA-256 over `\"trace|\" + conv_id + \"|msg:\" + turn_key` using the trimmed turn key and use the first 16 digest bytes, represented as 32 hexadecimal characters. The literal `msg:` is part of this derivation, not part of `turn_key`.\n\nThis identifies the trace when it has been ingested; the generation-completed event does not itself create an evaluation trace.\n\nAn empty key means no turn attribution, including turns recorded before this field was available or whose opening message could not be resolved. Do not invent a key for those turns.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_LLMGenerationStartedEvent",
      "title": "LLMGenerationStartedEvent",
      "slug": "/api/models/schema-pnv14jb39g",
      "description": "Event emitted when a generation run starts. The event context identifies the associated conversation.",
      "semantics": "Event emitted when a generation run starts. The event context identifies the associated conversation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "LLMGenerationStartedEvent",
        "slug": "/api/models/schema-pnv14jb39g"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "runId",
          "description": "Unique identifier for the workflow run",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "config",
          "description": "Optional snapshot of generation configuration used for this run",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startingSequence",
          "description": "Conversation sequence number at the moment the run started (if known)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_LLMGenerationStartedEventInput",
      "title": "LLMGenerationStartedEvent",
      "slug": "/api/models/schema-pnv14jb39g-input",
      "description": "Event emitted when a generation run starts. The event context identifies the associated conversation.",
      "semantics": "Event emitted when a generation run starts. The event context identifies the associated conversation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "LLMGenerationStartedEvent",
        "slug": "/api/models/schema-pnv14jb39g"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "runId",
          "description": "Unique identifier for the workflow run",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "config",
          "description": "Optional snapshot of generation configuration used for this run",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startingSequence",
          "description": "Conversation sequence number at the moment the run started (if known)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_LLMMessagePublishedEvent",
      "title": "LLMMessagePublishedEvent",
      "slug": "/api/models/schema-po1qsocerv",
      "description": "Domain event published when a new assistant/tool message is produced.",
      "semantics": "Domain event published when a new assistant/tool message is produced.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "LLMMessagePublishedEvent",
        "slug": "/api/models/schema-po1qsocerv"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "message",
          "description": "The generated assistant/tool message",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_LLMMessagePublishedEventInput",
      "title": "LLMMessagePublishedEvent",
      "slug": "/api/models/schema-po1qsocerv-input",
      "description": "Domain event published when a new assistant/tool message is produced.",
      "semantics": "Domain event published when a new assistant/tool message is produced.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "LLMMessagePublishedEvent",
        "slug": "/api/models/schema-po1qsocerv"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "message",
          "description": "The generated assistant/tool message",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MCPServerConfig",
      "title": "MCPServerConfig",
      "slug": "/api/models/schema-q8egnnm4a3",
      "description": "Full MCP server configuration used for server management.",
      "semantics": "Full MCP server configuration used for server management.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MCPServerConfig",
        "slug": "/api/models/schema-q8egnnm4a3"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/62d20s50a7"
      ],
      "fields": [
        {
          "name": "serverId",
          "description": "Unique identifier for this MCP server.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Human-readable name (e.g., \"GitHub Copilot MCP\", \"File System Tools\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endpoint",
          "description": "Server endpoint URL or connection string.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authConfig",
          "description": "Authentication configuration; for example, a token entry whose value is github\\_token.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enabled",
          "description": "Whether this server is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "priority",
          "description": "Default priority for tool selection (higher = preferred).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "discoveryTimeout",
          "description": "Timeout for tool discovery.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverMetadata",
          "description": "Additional server-specific metadata.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MCPServerConfigInput",
      "title": "MCPServerConfig",
      "slug": "/api/models/schema-q8egnnm4a3-input",
      "description": "Full MCP server configuration used for server management.",
      "semantics": "Full MCP server configuration used for server management.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MCPServerConfig",
        "slug": "/api/models/schema-q8egnnm4a3"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/62d20s50a7"
      ],
      "fields": [
        {
          "name": "serverId",
          "description": "Unique identifier for this MCP server.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Human-readable name (e.g., \"GitHub Copilot MCP\", \"File System Tools\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endpoint",
          "description": "Server endpoint URL or connection string.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authConfig",
          "description": "Authentication configuration; for example, a token entry whose value is github\\_token.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enabled",
          "description": "Whether this server is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "priority",
          "description": "Default priority for tool selection (higher = preferred).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "discoveryTimeout",
          "description": "Timeout for tool discovery.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverMetadata",
          "description": "Additional server-specific metadata.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MCPServerInfo",
      "title": "MCPServerInfo",
      "slug": "/api/models/schema-1ipatl4liq",
      "description": "Detailed server information",
      "semantics": "Detailed server information",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MCPServerInfo",
        "slug": "/api/models/schema-1ipatl4liq"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:mcpGetServerInfo"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "serverId",
          "description": "Identifier of the MCP server associated with the operation or tool.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name of the MCP server.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Version of the resource represented by this message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "capabilities",
          "description": "Capabilities reported by the MCP server.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional attributes associated with the resource.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Current connection status reported for the MCP server.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "availableTools",
          "description": "Tool definitions currently reported by the MCP server.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "kind",
          "description": "Ownership category of the MCP server definition.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MCPServerReference",
      "title": "MCPServerReference",
      "slug": "/api/models/schema-1hik90rmo1",
      "description": "MCP Server Reference Lightweight reference to pre-configured MCP servers used by workflows",
      "semantics": "MCP Server Reference Lightweight reference to pre-configured MCP servers used by workflows",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MCPServerReference",
        "slug": "/api/models/schema-1hik90rmo1"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updatePromptVariables",
        "conversations:updateSettings"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "serverId",
          "description": "ID of pre-configured MCP server (e.g., \"github\", \"filesystem\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "enabled",
          "description": "Whether to use this MCP server. Omission means enabled; only an explicitly false value excludes it from discovery.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "priority",
          "description": "Priority override for tool selection (higher = preferred).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowlistToolPatterns",
          "description": "Only include tools matching these patterns (e.g., \"github\\_get\\_*\", \"search\\_*\").",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "blocklistToolPatterns",
          "description": "Exclude tools matching these patterns (e.g., \"*\\_delete\", \"*\\_destroy\").",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverOverrides",
          "description": "Override server settings for this usage.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "deferTools",
          "description": "Whether this server's tools are deferred. A deferred tool is left out of the model's tool list until the run's tool search loads it. Omission or false declares every tool up front.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MCPServerReferenceInput",
      "title": "MCPServerReference",
      "slug": "/api/models/schema-1hik90rmo1-input",
      "description": "MCP Server Reference Lightweight reference to pre-configured MCP servers used by workflows",
      "semantics": "MCP Server Reference Lightweight reference to pre-configured MCP servers used by workflows",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MCPServerReference",
        "slug": "/api/models/schema-1hik90rmo1"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:mcpListTools",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateSettings"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "serverId",
          "description": "ID of pre-configured MCP server (e.g., \"github\", \"filesystem\").",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "enabled",
          "description": "Whether to use this MCP server. Omission means enabled; only an explicitly false value excludes it from discovery.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "priority",
          "description": "Priority override for tool selection (higher = preferred).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowlistToolPatterns",
          "description": "Only include tools matching these patterns (e.g., \"github\\_get\\_*\", \"search\\_*\").",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "blocklistToolPatterns",
          "description": "Exclude tools matching these patterns (e.g., \"*\\_delete\", \"*\\_destroy\").",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverOverrides",
          "description": "Override server settings for this usage.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "deferTools",
          "description": "Whether this server's tools are deferred. A deferred tool is left out of the model's tool list until the run's tool search loads it. Omission or false declares every tool up front.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MCPServerStatus",
      "title": "MCPServerStatus",
      "slug": "/api/models/schema-ou7clc4l5s",
      "description": "Status information returned for an MCP server.",
      "semantics": "Status information returned for an MCP server.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MCPServerStatus",
        "slug": "/api/models/schema-ou7clc4l5s"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:mcpListAvailableServers"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "serverId",
          "description": "Identifier of the MCP server whose status is reported.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name of the MCP server.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Current connection status reported for the MCP server.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolsDiscovered",
          "description": "Number of tool definitions found during the last discovery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastDiscoveryDuration",
          "description": "Elapsed duration of the last MCP tool discovery.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastError",
          "description": "Most recent error reported while contacting the MCP server.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastDiscoveryTime",
          "description": "Time when MCP tool discovery last ran.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "kind",
          "description": "Ownership of this server. Populated by ListAvailableServers for every source it merges.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_Mem0Config",
      "title": "MemoryConfig",
      "slug": "/api/models/schema-1g8iadjcu1",
      "description": "Configuration for searching, injecting and storing semantic memories during generation. Configure memory integration in the mem0 block of the conversation defaultGenerationConfig or in a per-turn overrideGenerationConfig.\n\nEnabled integration provides retrieval and asynchronous extraction. Retrieved context is added to the latest user message despite the injectAsSystemContext name. addMemoriesAsync is ignored: extraction runs after the run, without an option to delay the send response until extraction completes.\n\nReranking and graph relationships require deployment support; their flags do not establish that support or a complete relationship-removal procedure. exposeAsMcpTool has no effect. Use search-memories from the application or enable automatic retrieval with mem0.enabled; the flag alone does not give the model a new tool.\n\nWhen memory is enabled, search\\_top\\_k selects 1–50 results; search\\_threshold selects a relevance score from 0.0 to 1.0. The generation retrieval limit bounds injected context; the separate user-facing memory-search operation allows up to 100 results.\n\ncustom\\_extraction\\_prompt selects a custom extraction prompt when nonempty; otherwise the default prompt is used. agent\\_id\\_override changes the conversation-based memory scope so memories can be shared across conversations. include\\_assistant\\_messages controls assistant/agent-scoped memories and defaults to false. inject\\_memory\\_timestamps defaults to true and includes remembered and, when available, updated dates.",
      "semantics": "Configuration for searching, injecting and storing semantic memories during generation. Configure memory integration in the mem0 block of the conversation defaultGenerationConfig or in a per-turn overrideGenerationConfig.\n\nEnabled integration provides retrieval and asynchronous extraction. Retrieved context is added to the latest user message despite the injectAsSystemContext name. addMemoriesAsync is ignored: extraction runs after the run, without an option to delay the send response until extraction completes.\n\nReranking and graph relationships require deployment support; their flags do not establish that support or a complete relationship-removal procedure. exposeAsMcpTool has no effect. Use search-memories from the application or enable automatic retrieval with mem0.enabled; the flag alone does not give the model a new tool.\n\nWhen memory is enabled, search\\_top\\_k selects 1–50 results; search\\_threshold selects a relevance score from 0.0 to 1.0. The generation retrieval limit bounds injected context; the separate user-facing memory-search operation allows up to 100 results.\n\ncustom\\_extraction\\_prompt selects a custom extraction prompt when nonempty; otherwise the default prompt is used. agent\\_id\\_override changes the conversation-based memory scope so memories can be shared across conversations. include\\_assistant\\_messages controls assistant/agent-scoped memories and defaults to false. inject\\_memory\\_timestamps defaults to true and includes remembered and, when available, updated dates.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MemoryConfig",
        "slug": "/api/models/schema-1g8iadjcu1"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "enabled",
          "description": "Enable searching for relevant memories, adding them to generation context and extracting new memories after generation. Default: false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "searchTopK",
          "description": "Number of memories to retrieve during search. Higher values provide more context but increase token usage.\n\nThe generation retrieval limit is 50 because retrieved memories can be included in the volatile context attached to the current turn’s user message. This is a token-budget guard rather than a hard limit of the memory store. The separate user-facing memory-search request allows up to 100 results.\n\nRange: 1–50 when memory is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "searchThreshold",
          "description": "Minimum relevance score threshold for memory search results. Memories below this threshold are filtered out. Range: 0.0-1.0 (validated only when enabled = true)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "injectAsSystemContext",
          "description": "When true, include retrieved memories in the per-turn volatile context attached to the current user message. Memories are formatted as a bullet list under a \"\\[Relevant memories about this user:]\" header. When false, retrieved memories are not included in the model context.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "searchQueryOverride",
          "description": "Custom search query to use instead of the last user message. If empty, the last user message content is used as the search query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableRerank",
          "description": "Request reranking to improve search relevance. It may improve results and add latency, and requires deployment support. Default: false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "addMemoriesAsync",
          "description": "This field is accepted but does not change extraction behavior. When memory integration is enabled, extraction runs asynchronously after generation, including when this value is false. It does not make the send response wait for extraction to complete.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "customExtractionPrompt",
          "description": "Custom prompt for memory/fact extraction. If empty, the default extraction prompt is used. Use this to customize what types of facts are extracted.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableGraph",
          "description": "Enable relationship extraction and graph-based memory search when graph memory is configured. Default: false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "agentIdOverride",
          "description": "Override the agent\\_id used for memory scoping. By default, the conversation\\_id is used as the agent\\_id. Use this to share memories across multiple conversations.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "exposeAsMcpTool",
          "description": "This flag is currently ignored. It does not expose memory search as a model tool. Default: false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeAssistantMessages",
          "description": "Include assistant/agent-scoped memories in operations. When false, skips agent\\_id for both add and search operations, keeping only user-scoped memories. Default: false",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "injectMemoryTimestamps",
          "description": "Include created\\_at/updated\\_at timestamps on injected memories. When true, each memory bullet includes a \"(remembered: \\<date>)\" annotation and optionally \"(updated: \\<date>)\" if the memory was modified after creation. Default: true",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_Mem0ConfigInput",
      "title": "MemoryConfig",
      "slug": "/api/models/schema-1g8iadjcu1-input",
      "description": "Configuration for searching, injecting and storing semantic memories during generation. Configure memory integration in the mem0 block of the conversation defaultGenerationConfig or in a per-turn overrideGenerationConfig.\n\nEnabled integration provides retrieval and asynchronous extraction. Retrieved context is added to the latest user message despite the injectAsSystemContext name. addMemoriesAsync is ignored: extraction runs after the run, without an option to delay the send response until extraction completes.\n\nReranking and graph relationships require deployment support; their flags do not establish that support or a complete relationship-removal procedure. exposeAsMcpTool has no effect. Use search-memories from the application or enable automatic retrieval with mem0.enabled; the flag alone does not give the model a new tool.\n\nWhen memory is enabled, search\\_top\\_k selects 1–50 results; search\\_threshold selects a relevance score from 0.0 to 1.0. The generation retrieval limit bounds injected context; the separate user-facing memory-search operation allows up to 100 results.\n\ncustom\\_extraction\\_prompt selects a custom extraction prompt when nonempty; otherwise the default prompt is used. agent\\_id\\_override changes the conversation-based memory scope so memories can be shared across conversations. include\\_assistant\\_messages controls assistant/agent-scoped memories and defaults to false. inject\\_memory\\_timestamps defaults to true and includes remembered and, when available, updated dates.",
      "semantics": "Configuration for searching, injecting and storing semantic memories during generation. Configure memory integration in the mem0 block of the conversation defaultGenerationConfig or in a per-turn overrideGenerationConfig.\n\nEnabled integration provides retrieval and asynchronous extraction. Retrieved context is added to the latest user message despite the injectAsSystemContext name. addMemoriesAsync is ignored: extraction runs after the run, without an option to delay the send response until extraction completes.\n\nReranking and graph relationships require deployment support; their flags do not establish that support or a complete relationship-removal procedure. exposeAsMcpTool has no effect. Use search-memories from the application or enable automatic retrieval with mem0.enabled; the flag alone does not give the model a new tool.\n\nWhen memory is enabled, search\\_top\\_k selects 1–50 results; search\\_threshold selects a relevance score from 0.0 to 1.0. The generation retrieval limit bounds injected context; the separate user-facing memory-search operation allows up to 100 results.\n\ncustom\\_extraction\\_prompt selects a custom extraction prompt when nonempty; otherwise the default prompt is used. agent\\_id\\_override changes the conversation-based memory scope so memories can be shared across conversations. include\\_assistant\\_messages controls assistant/agent-scoped memories and defaults to false. inject\\_memory\\_timestamps defaults to true and includes remembered and, when available, updated dates.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MemoryConfig",
        "slug": "/api/models/schema-1g8iadjcu1"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "enabled",
          "description": "Enable searching for relevant memories, adding them to generation context and extracting new memories after generation. Default: false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "searchTopK",
          "description": "Number of memories to retrieve during search. Higher values provide more context but increase token usage.\n\nThe generation retrieval limit is 50 because retrieved memories can be included in the volatile context attached to the current turn’s user message. This is a token-budget guard rather than a hard limit of the memory store. The separate user-facing memory-search request allows up to 100 results.\n\nRange: 1–50 when memory is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "searchThreshold",
          "description": "Minimum relevance score threshold for memory search results. Memories below this threshold are filtered out. Range: 0.0-1.0 (validated only when enabled = true)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "injectAsSystemContext",
          "description": "When true, include retrieved memories in the per-turn volatile context attached to the current user message. Memories are formatted as a bullet list under a \"\\[Relevant memories about this user:]\" header. When false, retrieved memories are not included in the model context.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "searchQueryOverride",
          "description": "Custom search query to use instead of the last user message. If empty, the last user message content is used as the search query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableRerank",
          "description": "Request reranking to improve search relevance. It may improve results and add latency, and requires deployment support. Default: false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "addMemoriesAsync",
          "description": "This field is accepted but does not change extraction behavior. When memory integration is enabled, extraction runs asynchronously after generation, including when this value is false. It does not make the send response wait for extraction to complete.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "customExtractionPrompt",
          "description": "Custom prompt for memory/fact extraction. If empty, the default extraction prompt is used. Use this to customize what types of facts are extracted.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableGraph",
          "description": "Enable relationship extraction and graph-based memory search when graph memory is configured. Default: false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "agentIdOverride",
          "description": "Override the agent\\_id used for memory scoping. By default, the conversation\\_id is used as the agent\\_id. Use this to share memories across multiple conversations.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "exposeAsMcpTool",
          "description": "This flag is currently ignored. It does not expose memory search as a model tool. Default: false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeAssistantMessages",
          "description": "Include assistant/agent-scoped memories in operations. When false, skips agent\\_id for both add and search operations, keeping only user-scoped memories. Default: false",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "injectMemoryTimestamps",
          "description": "Include created\\_at/updated\\_at timestamps on injected memories. When true, each memory bullet includes a \"(remembered: \\<date>)\" annotation and optionally \"(updated: \\<date>)\" if the memory was modified after creation. Default: true",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MemoryReference",
      "title": "MemoryReference",
      "slug": "/api/models/schema-1ie9a4bgk5",
      "description": "A memory record retrieved and included in generation context.",
      "semantics": "A memory record retrieved and included in generation context.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MemoryReference",
        "slug": "/api/models/schema-1ie9a4bgk5"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "memoryId",
          "description": "Identifier of the retrieved memory record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "score",
          "description": "Relevance score reported by the memory provider for this match.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "memoryText",
          "description": "Text of the retrieved memory record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MemoryReferenceInput",
      "title": "MemoryReference",
      "slug": "/api/models/schema-1ie9a4bgk5-input",
      "description": "A memory record retrieved and included in generation context.",
      "semantics": "A memory record retrieved and included in generation context.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MemoryReference",
        "slug": "/api/models/schema-1ie9a4bgk5"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "memoryId",
          "description": "Identifier of the retrieved memory record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "score",
          "description": "Relevance score reported by the memory provider for this match.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "memoryText",
          "description": "Text of the retrieved memory record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MemorySearchParams",
      "title": "MemorySearchParams",
      "slug": "/api/models/schema-1igd5iut01",
      "description": "Parameters used to retrieve relevant memories during generation.",
      "semantics": "Parameters used to retrieve relevant memories during generation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MemorySearchParams",
        "slug": "/api/models/schema-1igd5iut01"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "query",
          "description": "Text submitted to memory retrieval for this generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topK",
          "description": "Maximum memory matches requested during generation-context retrieval.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "threshold",
          "description": "Minimum relevance threshold requested for the memory query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rerank",
          "description": "Whether reranking was requested for the memory search.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resultsReturned",
          "description": "Number of memory records returned by the search.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "relationsReturned",
          "description": "Number of graph relationships returned by the search.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MemorySearchParamsInput",
      "title": "MemorySearchParams",
      "slug": "/api/models/schema-1igd5iut01-input",
      "description": "Parameters used to retrieve relevant memories during generation.",
      "semantics": "Parameters used to retrieve relevant memories during generation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MemorySearchParams",
        "slug": "/api/models/schema-1igd5iut01"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "query",
          "description": "Text submitted to memory retrieval for this generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topK",
          "description": "Maximum memory matches requested during generation-context retrieval.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "threshold",
          "description": "Minimum relevance threshold requested for the memory query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rerank",
          "description": "Whether reranking was requested for the memory search.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resultsReturned",
          "description": "Number of memory records returned by the search.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "relationsReturned",
          "description": "Number of graph relationships returned by the search.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_Message",
      "title": "Message",
      "slug": "/api/models/schema-1j3dcf7kvu",
      "description": "Chat message\n\nAt least one of content or tool\\_calls must contain an entry; both lists may be nonempty. role must select a listed message role. Requiredness and allowed values are declared separately.",
      "semantics": "Chat message\n\nAt least one of content or tool\\_calls must contain an entry; both lists may be nonempty. role must select a listed message role. Requiredness and allowed values are declared separately.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Message",
        "slug": "/api/models/schema-1j3dcf7kvu"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "role",
          "description": "Role of the participant that produced the chat message.",
          "presence": "explicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "content",
          "description": "Content parts composing the chat message.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolCalls",
          "description": "Assistant-to-tool invocations.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name identifying the sender of the chat message.\n\noptional sender name",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timestamp",
          "description": "Timestamp associated with the conversation message or event.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messageId",
          "description": "Unique message identifier.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "annotations",
          "description": "Structured annotations (e.g., standardized web search URL citations, PDF reuse tokens)",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sequence",
          "description": "Monotonic, per-conversation sequence number for stable ordering (1-based)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "generatedBy",
          "description": "Workflow run id or generator key that produced this message (e.g., workflow run key)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usage",
          "description": "Token usage for this generation (populated for assistant messages)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "model",
          "description": "Model that generated this message (e.g., \"anthropic/claude-sonnet-4\")",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "generationContext",
          "description": "Dynamic context that shaped this generation (memories, search params, turn info)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientContext",
          "description": "Arbitrary client-supplied context attached by the client for this message",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "feedback",
          "description": "Feedback on an assistant message, with one entry per rater identified by rated\\_by. A later rating by the same rater replaces their earlier entry.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceUserMessageId",
          "description": "Identifier of the user message that opened this conversation turn. Generated messages in the same turn share this value; a user message carries its own message\\_id. Empty on historical messages that predate turn attribution.\n\nUse this field for turn attribution rather than inferring it from message adjacency or a client-supplied message\\_id. The generated\\_by identifier groups messages by generation run but does not identify the user message that opened the turn.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "finishReason",
          "description": "Why the model stopped, verbatim from the provider: \"stop\", \"tool\\_calls\", \"length\", \"error\". Empty for historical messages.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MessageFeedback",
      "title": "MessageFeedback",
      "slug": "/api/models/schema-1iroqctqt1",
      "description": "One user's feedback on an assistant-generated message.\n\nkind must select a listed feedback representation. Requiredness and allowed values are declared separately.",
      "semantics": "One user's feedback on an assistant-generated message.\n\nkind must select a listed feedback representation. Requiredness and allowed values are declared separately.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MessageFeedback",
        "slug": "/api/models/schema-1iroqctqt1"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "kind",
          "description": "Rating representation used to interpret the feedback value.",
          "presence": "explicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "thumbUp",
          "description": "Positive when true and negative when false; used for THUMB feedback.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rating",
          "description": "Numeric quality rating for SCALE feedback; the scale endpoints mean poor and excellent.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "reason",
          "description": "Optional explanation for the rating.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ratedAt",
          "description": "Timestamp when feedback was submitted (server-set)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ratedBy",
          "description": "Identifier of the user who submitted this feedback. Set by the server from the authenticated user identity; never client-supplied. Each user has one feedback entry per message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MessageFeedbackInput",
      "title": "MessageFeedback",
      "slug": "/api/models/schema-1iroqctqt1-input",
      "description": "One user's feedback on an assistant-generated message.\n\nkind must select a listed feedback representation. Requiredness and allowed values are declared separately.",
      "semantics": "One user's feedback on an assistant-generated message.\n\nkind must select a listed feedback representation. Requiredness and allowed values are declared separately.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "MessageFeedback",
        "slug": "/api/models/schema-1iroqctqt1"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "kind",
          "description": "Rating representation used to interpret the feedback value.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "thumbUp",
          "description": "Positive when true and negative when false; used for THUMB feedback.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rating",
          "description": "Numeric quality rating for SCALE feedback; the scale endpoints mean poor and excellent.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "reason",
          "description": "Optional explanation for the rating.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ratedAt",
          "description": "Timestamp when feedback was submitted (server-set)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ratedBy",
          "description": "Identifier of the user who submitted this feedback. Set by the server from the authenticated user identity; never client-supplied. Each user has one feedback entry per message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_MessageInput",
      "title": "Message",
      "slug": "/api/models/schema-1j3dcf7kvu-input",
      "description": "Chat message\n\nAt least one of content or tool\\_calls must contain an entry; both lists may be nonempty. role must select a listed message role. Requiredness and allowed values are declared separately.",
      "semantics": "Chat message\n\nAt least one of content or tool\\_calls must contain an entry; both lists may be nonempty. role must select a listed message role. Requiredness and allowed values are declared separately.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Message",
        "slug": "/api/models/schema-1j3dcf7kvu"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "role",
          "description": "Role of the participant that produced the chat message.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "content",
          "description": "Content parts composing the chat message.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolCalls",
          "description": "Assistant-to-tool invocations.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name identifying the sender of the chat message.\n\noptional sender name",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timestamp",
          "description": "Timestamp associated with the conversation message or event.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messageId",
          "description": "Unique message identifier.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "annotations",
          "description": "Structured annotations (e.g., standardized web search URL citations, PDF reuse tokens)",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sequence",
          "description": "Monotonic, per-conversation sequence number for stable ordering (1-based)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "generatedBy",
          "description": "Workflow run id or generator key that produced this message (e.g., workflow run key)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usage",
          "description": "Token usage for this generation (populated for assistant messages)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "model",
          "description": "Model that generated this message (e.g., \"anthropic/claude-sonnet-4\")",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "generationContext",
          "description": "Dynamic context that shaped this generation (memories, search params, turn info)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientContext",
          "description": "Arbitrary client-supplied context attached by the client for this message",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "feedback",
          "description": "Feedback on an assistant message, with one entry per rater identified by rated\\_by. A later rating by the same rater replaces their earlier entry.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceUserMessageId",
          "description": "Identifier of the user message that opened this conversation turn. Generated messages in the same turn share this value; a user message carries its own message\\_id. Empty on historical messages that predate turn attribution.\n\nUse this field for turn attribution rather than inferring it from message adjacency or a client-supplied message\\_id. The generated\\_by identifier groups messages by generation run but does not identify the user message that opened the turn.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "finishReason",
          "description": "Why the model stopped, verbatim from the provider: \"stop\", \"tool\\_calls\", \"length\", \"error\". Empty for historical messages.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ModelRoutingFilter",
      "title": "ModelRoutingFilter",
      "slug": "/api/models/schema-1ga4tjqqg1",
      "description": "ModelRoutingFilter defines metadata-based criteria for filtering model candidates. All filters are ANDed — a model must pass every specified filter.\n\nUnset or zero fields do not filter that dimension. Unknown maximum-output metadata currently passes a minimum-output filter, while an empty modality list fails a required-modality check. A passing metadata check is not proof the provider will honor the eventual request.\n\n[`maxPromptCost`](/api/models/schema-1ga4tjqqg1#request-field-maxpromptcost) and [`maxCompletionCost`](/api/models/schema-1ga4tjqqg1#request-field-maxcompletioncost) compare per-token catalog prices; unknown/unparseable prices currently pass. They do not cap total tokens, tool costs, retries or aggregate provider spend. Before sending paid traffic, confirm which spending limits are actually enforced for your account. Metadata-based capability filters also do not prove that a provider will honor a parameter on the eventual request.",
      "semantics": "ModelRoutingFilter defines metadata-based criteria for filtering model candidates. All filters are ANDed — a model must pass every specified filter.\n\nUnset or zero fields do not filter that dimension. Unknown maximum-output metadata currently passes a minimum-output filter, while an empty modality list fails a required-modality check. A passing metadata check is not proof the provider will honor the eventual request.\n\n[`maxPromptCost`](/api/models/schema-1ga4tjqqg1#request-field-maxpromptcost) and [`maxCompletionCost`](/api/models/schema-1ga4tjqqg1#request-field-maxcompletioncost) compare per-token catalog prices; unknown/unparseable prices currently pass. They do not cap total tokens, tool costs, retries or aggregate provider spend. Before sending paid traffic, confirm which spending limits are actually enforced for your account. Metadata-based capability filters also do not prove that a provider will honor a parameter on the eventual request.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ModelRoutingFilter",
        "slug": "/api/models/schema-1ga4tjqqg1"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "minContextLength",
          "description": "Minimum context window (tokens). Models below this are excluded.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "minMaxCompletionTokens",
          "description": "Minimum max completion tokens. Models below this are excluded. Models reporting 0 (unknown) pass through (permissive).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requiredInputModalities",
          "description": "Required input modalities (e.g., \\[\"image\", \"audio\"]). Model must support ALL listed. Models with empty input\\_modalities are filtered out (strict).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requiredOutputModalities",
          "description": "Required output modalities (e.g., \\[\"image\"]). Model must support ALL listed. Models with empty output\\_modalities are filtered out (strict).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxPromptCost",
          "description": "Maximum cost per prompt token (e.g., 0.000003). 0 = no limit. Unparseable pricing strings pass through (permissive).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxCompletionCost",
          "description": "Maximum cost per completion token. 0 = no limit. Unparseable pricing strings pass through (permissive).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "excludeModerated",
          "description": "Exclude models with content moderation enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requiredParameters",
          "description": "Required supported parameters (e.g., \\[\"tools\", \"response\\_format\"]). Model must support ALL listed.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ModelRoutingFilterInput",
      "title": "ModelRoutingFilter",
      "slug": "/api/models/schema-1ga4tjqqg1-input",
      "description": "ModelRoutingFilter defines metadata-based criteria for filtering model candidates. All filters are ANDed — a model must pass every specified filter.\n\nUnset or zero fields do not filter that dimension. Unknown maximum-output metadata currently passes a minimum-output filter, while an empty modality list fails a required-modality check. A passing metadata check is not proof the provider will honor the eventual request.\n\n[`maxPromptCost`](/api/models/schema-1ga4tjqqg1#request-field-maxpromptcost) and [`maxCompletionCost`](/api/models/schema-1ga4tjqqg1#request-field-maxcompletioncost) compare per-token catalog prices; unknown/unparseable prices currently pass. They do not cap total tokens, tool costs, retries or aggregate provider spend. Before sending paid traffic, confirm which spending limits are actually enforced for your account. Metadata-based capability filters also do not prove that a provider will honor a parameter on the eventual request.",
      "semantics": "ModelRoutingFilter defines metadata-based criteria for filtering model candidates. All filters are ANDed — a model must pass every specified filter.\n\nUnset or zero fields do not filter that dimension. Unknown maximum-output metadata currently passes a minimum-output filter, while an empty modality list fails a required-modality check. A passing metadata check is not proof the provider will honor the eventual request.\n\n[`maxPromptCost`](/api/models/schema-1ga4tjqqg1#request-field-maxpromptcost) and [`maxCompletionCost`](/api/models/schema-1ga4tjqqg1#request-field-maxcompletioncost) compare per-token catalog prices; unknown/unparseable prices currently pass. They do not cap total tokens, tool costs, retries or aggregate provider spend. Before sending paid traffic, confirm which spending limits are actually enforced for your account. Metadata-based capability filters also do not prove that a provider will honor a parameter on the eventual request.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ModelRoutingFilter",
        "slug": "/api/models/schema-1ga4tjqqg1"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "minContextLength",
          "description": "Minimum context window (tokens). Models below this are excluded.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "minMaxCompletionTokens",
          "description": "Minimum max completion tokens. Models below this are excluded. Models reporting 0 (unknown) pass through (permissive).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requiredInputModalities",
          "description": "Required input modalities (e.g., \\[\"image\", \"audio\"]). Model must support ALL listed. Models with empty input\\_modalities are filtered out (strict).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requiredOutputModalities",
          "description": "Required output modalities (e.g., \\[\"image\"]). Model must support ALL listed. Models with empty output\\_modalities are filtered out (strict).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxPromptCost",
          "description": "Maximum cost per prompt token (e.g., 0.000003). 0 = no limit. Unparseable pricing strings pass through (permissive).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxCompletionCost",
          "description": "Maximum cost per completion token. 0 = no limit. Unparseable pricing strings pass through (permissive).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "excludeModerated",
          "description": "Exclude models with content moderation enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requiredParameters",
          "description": "Required supported parameters (e.g., \\[\"tools\", \"response\\_format\"]). Model must support ALL listed.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PdfAnnotation",
      "title": "PdfAnnotation",
      "slug": "/api/models/schema-1hsi58i6pb",
      "description": "Provider annotation identifying a parsed PDF and reusable parsing output.",
      "semantics": "Provider annotation identifying a parsed PDF and reusable parsing output.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PdfAnnotation",
        "slug": "/api/models/schema-1hsi58i6pb"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "filename",
          "description": "Optional identifying information about the original file",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "engine",
          "description": "PDF parsing engine used by provider (e.g., \"pdf-text\", \"mistral-ocr\", \"native\")",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "token",
          "description": "Opaque provider token or handle allowing reuse without re-parsing",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceUrl",
          "description": "Optional: original source reference (public URL or data: URL)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hash",
          "description": "Provider-supplied hash identifying the parsed file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Optional structured content returned by provider annotations (text, image URLs, etc.) Note: This can be large; include only if you need to round-trip provider annotations.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PdfAnnotationInput",
      "title": "PdfAnnotation",
      "slug": "/api/models/schema-1hsi58i6pb-input",
      "description": "Provider annotation identifying a parsed PDF and reusable parsing output.",
      "semantics": "Provider annotation identifying a parsed PDF and reusable parsing output.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PdfAnnotation",
        "slug": "/api/models/schema-1hsi58i6pb"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "filename",
          "description": "Optional identifying information about the original file",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "engine",
          "description": "PDF parsing engine used by provider (e.g., \"pdf-text\", \"mistral-ocr\", \"native\")",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "token",
          "description": "Opaque provider token or handle allowing reuse without re-parsing",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceUrl",
          "description": "Optional: original source reference (public URL or data: URL)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hash",
          "description": "Provider-supplied hash identifying the parsed file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Optional structured content returned by provider annotations (text, image URLs, etc.) Note: This can be large; include only if you need to round-trip provider annotations.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PercentileThreshold",
      "title": "PercentileThreshold",
      "slug": "/api/models/schema-1gcuue0out",
      "description": "Percentile thresholds for provider performance metrics",
      "semantics": "Percentile thresholds for provider performance metrics",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PercentileThreshold",
        "slug": "/api/models/schema-1gcuue0out"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "p50",
          "description": "Threshold applied to the provider metric’s 50th percentile.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "p90",
          "description": "Threshold applied to the provider metric’s 90th percentile.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PercentileThresholdInput",
      "title": "PercentileThreshold",
      "slug": "/api/models/schema-1gcuue0out-input",
      "description": "Percentile thresholds for provider performance metrics",
      "semantics": "Percentile thresholds for provider performance metrics",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PercentileThreshold",
        "slug": "/api/models/schema-1gcuue0out"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "p50",
          "description": "Threshold applied to the provider metric’s 50th percentile.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "p90",
          "description": "Threshold applied to the provider metric’s 90th percentile.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PromptDefinition",
      "title": "PromptDefinition",
      "slug": "/api/models/schema-ou94n9qv48",
      "description": "A prompt definition exposed by an MCP server",
      "semantics": "A prompt definition exposed by an MCP server",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PromptDefinition",
        "slug": "/api/models/schema-ou94n9qv48"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:mcpGetPrompt",
        "conversations:mcpListPrompts"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name identifying the prompt template on the MCP server.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "title",
          "description": "Display title of the MCP prompt template.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Description of the MCP prompt template’s purpose.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "parameters",
          "description": "Parameter definitions accepted by the prompt template.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "template",
          "description": "Template string; clients may render with parameters.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PromptFragment",
      "title": "PromptFragment",
      "slug": "/api/models/schema-1j5dvgfmr9",
      "description": "Project-scoped reusable prompt-template text. Profiles and other fragments include it with `{{template \"fragment_id\" .}}`; variables come from the conversation’s prompt\\_variables.",
      "semantics": "Project-scoped reusable prompt-template text. Profiles and other fragments include it with `{{template \"fragment_id\" .}}`; variables come from the conversation’s prompt\\_variables.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PromptFragment",
        "slug": "/api/models/schema-1j5dvgfmr9"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createPromptFragment",
        "agent-profiles:getPromptFragment",
        "agent-profiles:getPromptFragmentSet",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listPromptFragments",
        "agent-profiles:updatePromptFragment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fragmentId",
          "description": "Stable template name, unique within the project library and used by include actions.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name used as a console hint for the reusable prompt fragment.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Raw template text, supporting `{{.variable}}` placeholders and nested `{{template \"id\" .}}` includes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PromptFragmentInput",
      "title": "PromptFragment",
      "slug": "/api/models/schema-1j5dvgfmr9-input",
      "description": "Project-scoped reusable prompt-template text. Profiles and other fragments include it with `{{template \"fragment_id\" .}}`; variables come from the conversation’s prompt\\_variables.",
      "semantics": "Project-scoped reusable prompt-template text. Profiles and other fragments include it with `{{template \"fragment_id\" .}}`; variables come from the conversation’s prompt\\_variables.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PromptFragment",
        "slug": "/api/models/schema-1j5dvgfmr9"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createPromptFragment",
        "agent-profiles:updatePromptFragment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fragmentId",
          "description": "Stable template name, unique within the project library and used by include actions.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name used as a console hint for the reusable prompt fragment.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Raw template text, supporting `{{.variable}}` placeholders and nested `{{template \"id\" .}}` includes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PromptParameter",
      "title": "PromptParameter",
      "slug": "/api/models/schema-ohoj3j73c1",
      "description": "A parameter used by a prompt template",
      "semantics": "A parameter used by a prompt template",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PromptParameter",
        "slug": "/api/models/schema-ohoj3j73c1"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:mcpGetPrompt",
        "conversations:mcpListPrompts"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name used to bind a value to this prompt-template parameter.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Explanation of the value expected for this prompt parameter.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "type",
          "description": "Free-form type hint, e.g. \"string\", \"number\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "required",
          "description": "Whether the prompt parameter must be supplied by the caller.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PromptTokensDetails",
      "title": "PromptTokensDetails",
      "slug": "/api/models/schema-1ivj82m55o",
      "description": "Breakdown of prompt token usage by category (input-side cache accounting)\n\nSubset semantics: cached\\_tokens and cache\\_write\\_tokens are a breakdown *of* prompt\\_tokens, so cached\\_tokens + cache\\_write\\_tokens \\<= Usage.prompt\\_tokens. Ordinary (full-rate) prompt tokens = prompt\\_tokens - cached\\_tokens - cache\\_write\\_tokens. audio\\_tokens / video\\_tokens are modality breakdowns of prompt\\_tokens (also a subset).",
      "semantics": "Breakdown of prompt token usage by category (input-side cache accounting)\n\nSubset semantics: cached\\_tokens and cache\\_write\\_tokens are a breakdown *of* prompt\\_tokens, so cached\\_tokens + cache\\_write\\_tokens \\<= Usage.prompt\\_tokens. Ordinary (full-rate) prompt tokens = prompt\\_tokens - cached\\_tokens - cache\\_write\\_tokens. audio\\_tokens / video\\_tokens are modality breakdowns of prompt\\_tokens (also a subset).",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PromptTokensDetails",
        "slug": "/api/models/schema-1ivj82m55o"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "cachedTokens",
          "description": "Prompt tokens served from cache (cache READ).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cacheWriteTokens",
          "description": "Prompt tokens written to cache this call (cache WRITE).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "audioTokens",
          "description": "Prompt tokens from audio input (multimodal).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "videoTokens",
          "description": "Prompt tokens from video input (multimodal).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PromptTokensDetailsInput",
      "title": "PromptTokensDetails",
      "slug": "/api/models/schema-1ivj82m55o-input",
      "description": "Breakdown of prompt token usage by category (input-side cache accounting)\n\nSubset semantics: cached\\_tokens and cache\\_write\\_tokens are a breakdown *of* prompt\\_tokens, so cached\\_tokens + cache\\_write\\_tokens \\<= Usage.prompt\\_tokens. Ordinary (full-rate) prompt tokens = prompt\\_tokens - cached\\_tokens - cache\\_write\\_tokens. audio\\_tokens / video\\_tokens are modality breakdowns of prompt\\_tokens (also a subset).",
      "semantics": "Breakdown of prompt token usage by category (input-side cache accounting)\n\nSubset semantics: cached\\_tokens and cache\\_write\\_tokens are a breakdown *of* prompt\\_tokens, so cached\\_tokens + cache\\_write\\_tokens \\<= Usage.prompt\\_tokens. Ordinary (full-rate) prompt tokens = prompt\\_tokens - cached\\_tokens - cache\\_write\\_tokens. audio\\_tokens / video\\_tokens are modality breakdowns of prompt\\_tokens (also a subset).",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PromptTokensDetails",
        "slug": "/api/models/schema-1ivj82m55o"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "cachedTokens",
          "description": "Prompt tokens served from cache (cache READ).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cacheWriteTokens",
          "description": "Prompt tokens written to cache this call (cache WRITE).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "audioTokens",
          "description": "Prompt tokens from audio input (multimodal).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "videoTokens",
          "description": "Prompt tokens from video input (multimodal).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PromptVariableSpec",
      "title": "PromptVariableSpec",
      "slug": "/api/models/schema-1hkadmq6cl",
      "description": "Declares a variable used by a profile’s system-prompt template. Values are supplied through the conversation’s prompt\\_variables.\n\nWhen creating a conversation with an explicitly selected profile, a variable\\_specs entry with required set to true and no nonempty default\\_value causes MISSING\\_REQUIRED\\_PROMPT\\_VARIABLES if the variable is missing. Supply its value at creation; this validation is not repeated for each send or queued turn.\n\nSet intended values explicitly even when the specification declares a default. A nonempty default\\_value suppresses the creation-time missing-required error but is not automatically inserted into the rendered prompt.",
      "semantics": "Declares a variable used by a profile’s system-prompt template. Values are supplied through the conversation’s prompt\\_variables.\n\nWhen creating a conversation with an explicitly selected profile, a variable\\_specs entry with required set to true and no nonempty default\\_value causes MISSING\\_REQUIRED\\_PROMPT\\_VARIABLES if the variable is missing. Supply its value at creation; this validation is not repeated for each send or queued turn.\n\nSet intended values explicitly even when the specification declares a default. A nonempty default\\_value suppresses the creation-time missing-required error but is not automatically inserted into the rendered prompt.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PromptVariableSpec",
        "slug": "/api/models/schema-1hkadmq6cl"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Variable name referenced by the profile’s system-prompt template.\n\ne.g. \"user\\_name\" → substituted for \\{\\{.user\\_name}}",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Console hint + caller documentation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "required",
          "description": "Whether a value is required for a profile explicitly selected at conversation creation. This validation does not run for every send or queued turn.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "defaultValue",
          "description": "A nonempty default value suppresses the creation-time missing-required error. It is not automatically inserted into the rendered prompt; supply intended values explicitly.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "type",
          "description": "Optional runtime type for this variable in the template engine.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_PromptVariableSpecInput",
      "title": "PromptVariableSpec",
      "slug": "/api/models/schema-1hkadmq6cl-input",
      "description": "Declares a variable used by a profile’s system-prompt template. Values are supplied through the conversation’s prompt\\_variables.\n\nWhen creating a conversation with an explicitly selected profile, a variable\\_specs entry with required set to true and no nonempty default\\_value causes MISSING\\_REQUIRED\\_PROMPT\\_VARIABLES if the variable is missing. Supply its value at creation; this validation is not repeated for each send or queued turn.\n\nSet intended values explicitly even when the specification declares a default. A nonempty default\\_value suppresses the creation-time missing-required error but is not automatically inserted into the rendered prompt.",
      "semantics": "Declares a variable used by a profile’s system-prompt template. Values are supplied through the conversation’s prompt\\_variables.\n\nWhen creating a conversation with an explicitly selected profile, a variable\\_specs entry with required set to true and no nonempty default\\_value causes MISSING\\_REQUIRED\\_PROMPT\\_VARIABLES if the variable is missing. Supply its value at creation; this validation is not repeated for each send or queued turn.\n\nSet intended values explicitly even when the specification declares a default. A nonempty default\\_value suppresses the creation-time missing-required error but is not automatically inserted into the rendered prompt.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PromptVariableSpec",
        "slug": "/api/models/schema-1hkadmq6cl"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:updateAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Variable name referenced by the profile’s system-prompt template.\n\ne.g. \"user\\_name\" → substituted for \\{\\{.user\\_name}}",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Console hint + caller documentation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "required",
          "description": "Whether a value is required for a profile explicitly selected at conversation creation. This validation does not run for every send or queued turn.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "defaultValue",
          "description": "A nonempty default value suppresses the creation-time missing-required error. It is not automatically inserted into the rendered prompt; supply intended values explicitly.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "type",
          "description": "Optional runtime type for this variable in the template engine.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_Provider",
      "title": "Provider",
      "slug": "/api/models/enum-q8qp045fpk",
      "description": "Target model provider",
      "semantics": "",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Provider",
        "slug": "/api/models/enum-q8qp045fpk"
      },
      "usedBy": [],
      "usedByRoots": [
        "API Enum/6tv1pafpa2"
      ],
      "fields": []
    },
    {
      "schemaName": "llm_v1_common_v1_ProviderInput",
      "title": "Provider",
      "slug": "/api/models/enum-q8qp045fpk-input",
      "description": "Target model provider",
      "semantics": "",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Provider",
        "slug": "/api/models/enum-q8qp045fpk"
      },
      "usedBy": [],
      "usedByRoots": [
        "API Enum/6tv1pafpa2"
      ],
      "fields": []
    },
    {
      "schemaName": "llm_v1_common_v1_ProviderMaxPrice",
      "title": "ProviderMaxPrice",
      "slug": "/api/models/schema-1geaq4stvt",
      "description": "Routing / provider preferences (generic superset)",
      "semantics": "Routing / provider preferences (generic superset)",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ProviderMaxPrice",
        "slug": "/api/models/schema-1geaq4stvt"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "prompt",
          "description": "$/1M prompt tokens.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completion",
          "description": "$/1M completion tokens.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "request",
          "description": "Maximum provider cost allowed per request, in US dollars.\n\n$/request",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "image",
          "description": "Maximum provider cost allowed per image, in US dollars.\n\n$/image",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "audio",
          "description": "$/1M audio tokens.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ProviderMaxPriceInput",
      "title": "ProviderMaxPrice",
      "slug": "/api/models/schema-1geaq4stvt-input",
      "description": "Routing / provider preferences (generic superset)",
      "semantics": "Routing / provider preferences (generic superset)",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ProviderMaxPrice",
        "slug": "/api/models/schema-1geaq4stvt"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "prompt",
          "description": "$/1M prompt tokens.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completion",
          "description": "$/1M completion tokens.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "request",
          "description": "Maximum provider cost allowed per request, in US dollars.\n\n$/request",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "image",
          "description": "Maximum provider cost allowed per image, in US dollars.\n\n$/image",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "audio",
          "description": "$/1M audio tokens.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ProviderPreferences",
      "title": "ProviderPreferences",
      "slug": "/api/models/schema-1gg690bhqh",
      "description": "Routing preferences restricting and ordering the model providers eligible for a request.",
      "semantics": "Routing preferences restricting and ordering the model providers eligible for a request.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ProviderPreferences",
        "slug": "/api/models/schema-1gg690bhqh"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "order",
          "description": "Preferred ordering of model providers for routing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowFallbacks",
          "description": "The current chat routing path enables provider fallbacks even when this value is false or omitted. This field cannot disable fallback in that path. Use `only` to restrict eligible providers; confirm the selected providers support the requested model.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requireParameters",
          "description": "Whether routing requires providers to support the requested parameters.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dataCollection",
          "description": "Provider data-collection preference used when routing the request.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "zdr",
          "description": "Whether routing requests providers offering zero data retention.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "only",
          "description": "Provider identifiers allowed by the routing preference.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ignore",
          "description": "Provider identifiers excluded by the routing preference.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "quantizations",
          "description": "Model quantization formats allowed by the routing preference.\n\ngeneric string for portability",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sort",
          "description": "Metric used to order eligible model providers.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxPrice",
          "description": "Upper price bounds used when selecting a model provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enforceDistillableText",
          "description": "Embeddings: enforce distillable text.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "preferredMinThroughput",
          "description": "Deprioritize providers below this throughput (tokens/sec). Does not exclude — just pushes to end of preference list.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "preferredMaxLatency",
          "description": "Deprioritize providers above this latency (ms).",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ProviderPreferencesInput",
      "title": "ProviderPreferences",
      "slug": "/api/models/schema-1gg690bhqh-input",
      "description": "Routing preferences restricting and ordering the model providers eligible for a request.",
      "semantics": "Routing preferences restricting and ordering the model providers eligible for a request.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ProviderPreferences",
        "slug": "/api/models/schema-1gg690bhqh"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "order",
          "description": "Preferred ordering of model providers for routing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowFallbacks",
          "description": "The current chat routing path enables provider fallbacks even when this value is false or omitted. This field cannot disable fallback in that path. Use `only` to restrict eligible providers; confirm the selected providers support the requested model.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requireParameters",
          "description": "Whether routing requires providers to support the requested parameters.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dataCollection",
          "description": "Provider data-collection preference used when routing the request.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "zdr",
          "description": "Whether routing requests providers offering zero data retention.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "only",
          "description": "Provider identifiers allowed by the routing preference.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ignore",
          "description": "Provider identifiers excluded by the routing preference.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "quantizations",
          "description": "Model quantization formats allowed by the routing preference.\n\ngeneric string for portability",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sort",
          "description": "Metric used to order eligible model providers.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxPrice",
          "description": "Upper price bounds used when selecting a model provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enforceDistillableText",
          "description": "Embeddings: enforce distillable text.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "preferredMinThroughput",
          "description": "Deprioritize providers below this throughput (tokens/sec). Does not exclude — just pushes to end of preference list.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "preferredMaxLatency",
          "description": "Deprioritize providers above this latency (ms).",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ReasoningOptions",
      "title": "ReasoningOptions",
      "slug": "/api/models/schema-1gi26i7r89",
      "description": "Reasoning options\n\nSupported effort settings depend on the selected model; a setting can be rejected or ignored when unsupported. To ask for the answer without returned reasoning text, set [`exclude`](/api/models/schema-1gi26i7r89#request-field-exclude) to `true`. That controls the output you receive, not whether the model uses or bills reasoning tokens.",
      "semantics": "Reasoning options\n\nSupported effort settings depend on the selected model; a setting can be rejected or ignored when unsupported. To ask for the answer without returned reasoning text, set [`exclude`](/api/models/schema-1gi26i7r89#request-field-exclude) to `true`. That controls the output you receive, not whether the model uses or bills reasoning tokens.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ReasoningOptions",
        "slug": "/api/models/schema-1gi26i7r89"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "effort",
          "description": "Requested model reasoning effort.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxTokens",
          "description": "Maximum reasoning-token count requested from the model provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "exclude",
          "description": "Whether the provider should omit reasoning content from its response.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeReasoningHistory",
          "description": "When true (default), reasoning content from previous turns is included in multi-turn requests to enable provider continuity.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ReasoningOptionsInput",
      "title": "ReasoningOptions",
      "slug": "/api/models/schema-1gi26i7r89-input",
      "description": "Reasoning options\n\nSupported effort settings depend on the selected model; a setting can be rejected or ignored when unsupported. To ask for the answer without returned reasoning text, set [`exclude`](/api/models/schema-1gi26i7r89#request-field-exclude) to `true`. That controls the output you receive, not whether the model uses or bills reasoning tokens.",
      "semantics": "Reasoning options\n\nSupported effort settings depend on the selected model; a setting can be rejected or ignored when unsupported. To ask for the answer without returned reasoning text, set [`exclude`](/api/models/schema-1gi26i7r89#request-field-exclude) to `true`. That controls the output you receive, not whether the model uses or bills reasoning tokens.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ReasoningOptions",
        "slug": "/api/models/schema-1gi26i7r89"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "effort",
          "description": "Requested model reasoning effort.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxTokens",
          "description": "Maximum reasoning-token count requested from the model provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "exclude",
          "description": "Whether the provider should omit reasoning content from its response.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeReasoningHistory",
          "description": "When true (default), reasoning content from previous turns is included in multi-turn requests to enable provider continuity.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_RelationReference",
      "title": "RelationReference",
      "slug": "/api/models/schema-1ijit8ceuv",
      "description": "A graph relationship retrieved and included in generation context.",
      "semantics": "A graph relationship retrieved and included in generation context.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RelationReference",
        "slug": "/api/models/schema-1ijit8ceuv"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "source",
          "description": "Source entity of the memory graph relationship.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "relationship",
          "description": "Relationship label connecting the source and destination entities.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "destination",
          "description": "Destination entity of the memory graph relationship.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_RelationReferenceInput",
      "title": "RelationReference",
      "slug": "/api/models/schema-1ijit8ceuv-input",
      "description": "A graph relationship retrieved and included in generation context.",
      "semantics": "A graph relationship retrieved and included in generation context.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RelationReference",
        "slug": "/api/models/schema-1ijit8ceuv"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "source",
          "description": "Source entity of the memory graph relationship.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "relationship",
          "description": "Relationship label connecting the source and destination entities.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "destination",
          "description": "Destination entity of the memory graph relationship.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_Resource",
      "title": "Resource",
      "slug": "/api/models/schema-pbf83hf239",
      "description": "A resource exposed by an MCP server",
      "semantics": "A resource exposed by an MCP server",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Resource",
        "slug": "/api/models/schema-pbf83hf239"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:mcpListResources",
        "conversations:mcpReadResource"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "uri",
          "description": "Canonical URI for the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "title",
          "description": "Display title of the MCP resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Description of the content available from the MCP resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "mimeType",
          "description": "Media type of the content exposed by the MCP resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Optional embedded content.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "annotations",
          "description": "Optional annotations/metadata.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastModified",
          "description": "Time when this resource was last modified.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ScoredVector",
      "title": "ScoredVector",
      "slug": "/api/models/schema-q8s584s888",
      "description": "Vector match with score and optional payloads",
      "semantics": "Vector match with score and optional payloads",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ScoredVector",
        "slug": "/api/models/schema-q8s584s888"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6vbcrt8mlp"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Identifier of the vector record returned by the search.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "score",
          "description": "Similarity score reported by the vector search provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "values",
          "description": "Present if include\\_values=true.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Present if include\\_metadata=true.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "namespace",
          "description": "Namespace used to group vector records.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ScoredVectorInput",
      "title": "ScoredVector",
      "slug": "/api/models/schema-q8s584s888-input",
      "description": "Vector match with score and optional payloads",
      "semantics": "Vector match with score and optional payloads",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ScoredVector",
        "slug": "/api/models/schema-q8s584s888"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6vbcrt8mlp"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Identifier of the vector record returned by the search.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "score",
          "description": "Similarity score reported by the vector search provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "values",
          "description": "Present if include\\_values=true.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Present if include\\_metadata=true.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "namespace",
          "description": "Namespace used to group vector records.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_SourcePromptFragment",
      "title": "SourcePromptFragment",
      "slug": "/api/models/schema-ohqh497pal",
      "description": "Shared template block supplied for import. Its path resolves source include directives; fragment\\_id supplies the stable output identity when shared fragments are emitted, or is derived from the path when omitted.",
      "semantics": "Shared template block supplied for import. Its path resolves source include directives; fragment\\_id supplies the stable output identity when shared fragments are emitted, or is derived from the path when omitted.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SourcePromptFragment",
        "slug": "/api/models/schema-ohqh497pal"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:importAgentProfiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fragmentId",
          "description": "Identifier of the reusable prompt fragment.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name for the imported reusable prompt fragment.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceDsl",
          "description": "Raw source text (may itself contain @include / metadata comments).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "path",
          "description": "Include path, e.g. \"\\_shared/safety-module.txt\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_SourcePromptTemplate",
      "title": "SourcePromptTemplate",
      "slug": "/api/models/schema-pjk9r8rn5b",
      "description": "Source persona template to convert into an agent profile during import. Its source\\_dsl contains the original template syntax from which the importer derives the profile template and variable specifications.",
      "semantics": "Source persona template to convert into an agent profile during import. Its source\\_dsl contains the original template syntax from which the importer derives the profile template and variable specifications.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SourcePromptTemplate",
        "slug": "/api/models/schema-pjk9r8rn5b"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:importAgentProfiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name for the imported agent profile.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "whenToUse",
          "description": "Instructions describing when the imported agent profile should be selected.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "keywords",
          "description": "Keywords associated with selection of the imported agent profile.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceDsl",
          "description": "Raw source-DSL system prompt.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "generationConfig",
          "description": "Generation settings other than the prompt, such as temperature. Must not set model or models: import refuses a template that does, and the model is set afterwards with UpdateAgentProfile.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_SparseValues",
      "title": "SparseValues",
      "slug": "/api/models/schema-q8ublbqo12",
      "description": "Optional sparse component for hybrid search",
      "semantics": "Optional sparse component for hybrid search",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SparseValues",
        "slug": "/api/models/schema-q8ublbqo12"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6vhb5mpe0m"
      ],
      "fields": [
        {
          "name": "indices",
          "description": "Positions of the nonzero components in the sparse vector.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "values",
          "description": "Numeric components of the sparse vector.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_SparseValuesInput",
      "title": "SparseValues",
      "slug": "/api/models/schema-q8ublbqo12-input",
      "description": "Optional sparse component for hybrid search",
      "semantics": "Optional sparse component for hybrid search",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SparseValues",
        "slug": "/api/models/schema-q8ublbqo12"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6vhb5mpe0m"
      ],
      "fields": [
        {
          "name": "indices",
          "description": "Positions of the nonzero components in the sparse vector.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "values",
          "description": "Numeric components of the sparse vector.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_StopOnFailureRule",
      "title": "StopOnFailureRule",
      "slug": "/api/models/schema-1gstrgb39r",
      "description": "Requested tool-selection rule for handling an execution failure. The current generation workflow stores these rules but does not evaluate them or stop a loop or run because of them.\n\nThe conditions in [`stopOnFailureRules`](/api/models/schema-1h2ji21uc4#request-field-stoponfailurerules), including [`priority`](/api/models/schema-1gstrgb39r#request-field-priority), timeout inclusion and error matching, are not enforced. Do not rely on these fields as a stop control.",
      "semantics": "Requested tool-selection rule for handling an execution failure. The current generation workflow stores these rules but does not evaluate them or stop a loop or run because of them.\n\nThe conditions in [`stopOnFailureRules`](/api/models/schema-1h2ji21uc4#request-field-stoponfailurerules), including [`priority`](/api/models/schema-1gstrgb39r#request-field-priority), timeout inclusion and error matching, are not enforced. Do not rely on these fields as a stop control.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "StopOnFailureRule",
        "slug": "/api/models/schema-1gstrgb39r"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "conversations:updatePromptVariables",
        "conversations:updateSettings",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "toolNamePatterns",
          "description": "Requested tool-name selection; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverIds",
          "description": "Requested MCP server selection; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "onFailure",
          "description": "Requested failure action; not evaluated by the current generation workflow.\n\nSTOP\\_LOOP or STOP\\_RUN",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeTimeouts",
          "description": "Requested inclusion of timeouts as failures; not evaluated by the current generation workflow.\n\ntreat timeouts as failure for this rule",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "errorSubstrings",
          "description": "Requested error-text selection; not evaluated by the current generation workflow.\n\nonly stop if error matches",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "priority",
          "description": "Requested rule priority; not evaluated by the current generation workflow.\n\nlower evaluated first",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_StopOnFailureRuleInput",
      "title": "StopOnFailureRule",
      "slug": "/api/models/schema-1gstrgb39r-input",
      "description": "Requested tool-selection rule for handling an execution failure. The current generation workflow stores these rules but does not evaluate them or stop a loop or run because of them.\n\nThe conditions in [`stopOnFailureRules`](/api/models/schema-1h2ji21uc4#request-field-stoponfailurerules), including [`priority`](/api/models/schema-1gstrgb39r#request-field-priority), timeout inclusion and error matching, are not enforced. Do not rely on these fields as a stop control.",
      "semantics": "Requested tool-selection rule for handling an execution failure. The current generation workflow stores these rules but does not evaluate them or stop a loop or run because of them.\n\nThe conditions in [`stopOnFailureRules`](/api/models/schema-1h2ji21uc4#request-field-stoponfailurerules), including [`priority`](/api/models/schema-1gstrgb39r#request-field-priority), timeout inclusion and error matching, are not enforced. Do not rely on these fields as a stop control.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "StopOnFailureRule",
        "slug": "/api/models/schema-1gstrgb39r"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "conversations:updateSettings",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "toolNamePatterns",
          "description": "Requested tool-name selection; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverIds",
          "description": "Requested MCP server selection; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "onFailure",
          "description": "Requested failure action; not evaluated by the current generation workflow.\n\nSTOP\\_LOOP or STOP\\_RUN",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeTimeouts",
          "description": "Requested inclusion of timeouts as failures; not evaluated by the current generation workflow.\n\ntreat timeouts as failure for this rule",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "errorSubstrings",
          "description": "Requested error-text selection; not evaluated by the current generation workflow.\n\nonly stop if error matches",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "priority",
          "description": "Requested rule priority; not evaluated by the current generation workflow.\n\nlower evaluated first",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_StructuredMessage",
      "title": "StructuredMessage",
      "slug": "/api/models/schema-1ho1lk4ndj",
      "description": "A structured message whose JSON payload has been validated against a declared schema. Consumers can trust that json\\_payload conforms to the schema identified by schema\\_name.\n\nInspect the run outcome before treating any message as complete. Current structured metadata is attached to a text content part through [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage); ordinary text is still present. [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage) can be absent. Use an object at the schema root and validate the exact final response your application consumes; server validation covers only the first model choice. For integers that your JSON client cannot represent exactly, define string-valued fields in your schema instead of converting them through floating point.",
      "semantics": "A structured message whose JSON payload has been validated against a declared schema. Consumers can trust that json\\_payload conforms to the schema identified by schema\\_name.\n\nInspect the run outcome before treating any message as complete. Current structured metadata is attached to a text content part through [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage); ordinary text is still present. [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage) can be absent. Use an object at the schema root and validate the exact final response your application consumes; server validation covers only the first model choice. For integers that your JSON client cannot represent exactly, define string-valued fields in your schema instead of converting them through floating point.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "StructuredMessage",
        "slug": "/api/models/schema-1ho1lk4ndj"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:mcpListResources",
        "conversations:mcpReadResource",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "jsonPayload",
          "description": "The validated JSON payload as a Struct (preserves types)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "schemaName",
          "description": "Schema identifier (from ResponseFormat.schema\\_name)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "healed",
          "description": "Whether response healing is reported for this structured message. Currently returned as false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_StructuredMessageInput",
      "title": "StructuredMessage",
      "slug": "/api/models/schema-1ho1lk4ndj-input",
      "description": "A structured message whose JSON payload has been validated against a declared schema. Consumers can trust that json\\_payload conforms to the schema identified by schema\\_name.\n\nInspect the run outcome before treating any message as complete. Current structured metadata is attached to a text content part through [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage); ordinary text is still present. [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage) can be absent. Use an object at the schema root and validate the exact final response your application consumes; server validation covers only the first model choice. For integers that your JSON client cannot represent exactly, define string-valued fields in your schema instead of converting them through floating point.",
      "semantics": "A structured message whose JSON payload has been validated against a declared schema. Consumers can trust that json\\_payload conforms to the schema identified by schema\\_name.\n\nInspect the run outcome before treating any message as complete. Current structured metadata is attached to a text content part through [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage); ordinary text is still present. [`structuredMessage`](/api/models/schema-1hqi9r2bhh#response-field-structuredmessage) can be absent. Use an object at the schema root and validate the exact final response your application consumes; server validation covers only the first model choice. For integers that your JSON client cannot represent exactly, define string-valued fields in your schema instead of converting them through floating point.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "StructuredMessage",
        "slug": "/api/models/schema-1ho1lk4ndj"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "jsonPayload",
          "description": "The validated JSON payload as a Struct (preserves types)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "schemaName",
          "description": "Schema identifier (from ResponseFormat.schema\\_name)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "healed",
          "description": "Whether response healing is reported for this structured message. Currently returned as false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_TextDocument",
      "title": "TextDocument",
      "slug": "/api/models/schema-q92tfl8qp2",
      "description": "Text and associated metadata submitted for an embedding-assisted upsert. `id` identifies the vector record, `text` supplies the content to embed, and `metadata` carries additional attributes.",
      "semantics": "Text and associated metadata submitted for an embedding-assisted upsert. `id` identifies the vector record, `text` supplies the content to embed, and `metadata` carries additional attributes.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TextDocument",
        "slug": "/api/models/schema-q92tfl8qp2"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/t0tqko5pgb"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Identifier used to associate embedded text with its vector record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "text",
          "description": "Text content supplied for the embedding or document.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "metadata",
          "description": "Additional attributes associated with the resource.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_TextDocumentInput",
      "title": "TextDocument",
      "slug": "/api/models/schema-q92tfl8qp2-input",
      "description": "Text and associated metadata submitted for an embedding-assisted upsert. `id` identifies the vector record, `text` supplies the content to embed, and `metadata` carries additional attributes.",
      "semantics": "Text and associated metadata submitted for an embedding-assisted upsert. `id` identifies the vector record, `text` supplies the content to embed, and `metadata` carries additional attributes.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TextDocument",
        "slug": "/api/models/schema-q92tfl8qp2"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/t0tqko5pgb"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Identifier used to associate embedded text with its vector record.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "text",
          "description": "Text content supplied for the embedding or document.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "metadata",
          "description": "Additional attributes associated with the resource.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_TimeAwareConfig",
      "title": "TimeAwareConfig",
      "slug": "/api/models/schema-1gkqaobt3t",
      "description": "Configuration for time-aware LLM generation. Controls injection of temporal context (current time, message timestamps, file timestamps) into the LLM context during generation.\n\ninclude\\_message\\_timestamps and include\\_file\\_timestamps default to false. The timezone is an IANA timezone name and defaults to UTC.\n\ntimestamp\\_format accepts empty text, friendly, iso8601 or date\\_only. The default friendly format includes a human-readable date, time and zone; iso8601 uses an ISO timestamp, and date\\_only includes only the date. An unrecognized value uses friendly formatting.",
      "semantics": "Configuration for time-aware LLM generation. Controls injection of temporal context (current time, message timestamps, file timestamps) into the LLM context during generation.\n\ninclude\\_message\\_timestamps and include\\_file\\_timestamps default to false. The timezone is an IANA timezone name and defaults to UTC.\n\ntimestamp\\_format accepts empty text, friendly, iso8601 or date\\_only. The default friendly format includes a human-readable date, time and zone; iso8601 uses an ISO timestamp, and date\\_only includes only the date. An unrecognized value uses friendly formatting.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TimeAwareConfig",
        "slug": "/api/models/schema-1gkqaobt3t"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "includeCurrentTime",
          "description": "When enabled, include the current date and time in the per-turn volatile context attached to the current user message, using the configured timezone and timestamp format.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeMessageTimestamps",
          "description": "Include timestamps on messages in the model context to provide chronological context. Requires the message timestamp to be populated. Default: false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeFileTimestamps",
          "description": "Include upload/modification timestamps when resolving FILE\\_ID content. When true, resolved file references include \"\\[Uploaded: \\<timestamp>]\" annotations. Default: false",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timezone",
          "description": "Timezone for formatting (IANA format, e.g., \"America/Los\\_Angeles\"). Default: \"UTC\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timestampFormat",
          "description": "Format pattern for timestamps. \"friendly\" (default): \"Jan 2, 2026 at 3:04 PM MST\" \"iso8601\": \"2026-01-02T15:04:00-08:00\" \"date\\_only\": \"2026-01-02\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_TimeAwareConfigInput",
      "title": "TimeAwareConfig",
      "slug": "/api/models/schema-1gkqaobt3t-input",
      "description": "Configuration for time-aware LLM generation. Controls injection of temporal context (current time, message timestamps, file timestamps) into the LLM context during generation.\n\ninclude\\_message\\_timestamps and include\\_file\\_timestamps default to false. The timezone is an IANA timezone name and defaults to UTC.\n\ntimestamp\\_format accepts empty text, friendly, iso8601 or date\\_only. The default friendly format includes a human-readable date, time and zone; iso8601 uses an ISO timestamp, and date\\_only includes only the date. An unrecognized value uses friendly formatting.",
      "semantics": "Configuration for time-aware LLM generation. Controls injection of temporal context (current time, message timestamps, file timestamps) into the LLM context during generation.\n\ninclude\\_message\\_timestamps and include\\_file\\_timestamps default to false. The timezone is an IANA timezone name and defaults to UTC.\n\ntimestamp\\_format accepts empty text, friendly, iso8601 or date\\_only. The default friendly format includes a human-readable date, time and zone; iso8601 uses an ISO timestamp, and date\\_only includes only the date. An unrecognized value uses friendly formatting.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TimeAwareConfig",
        "slug": "/api/models/schema-1gkqaobt3t"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "includeCurrentTime",
          "description": "When enabled, include the current date and time in the per-turn volatile context attached to the current user message, using the configured timezone and timestamp format.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeMessageTimestamps",
          "description": "Include timestamps on messages in the model context to provide chronological context. Requires the message timestamp to be populated. Default: false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeFileTimestamps",
          "description": "Include upload/modification timestamps when resolving FILE\\_ID content. When true, resolved file references include \"\\[Uploaded: \\<timestamp>]\" annotations. Default: false",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timezone",
          "description": "Timezone for formatting (IANA format, e.g., \"America/Los\\_Angeles\"). Default: \"UTC\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timestampFormat",
          "description": "Format pattern for timestamps. \"friendly\" (default): \"Jan 2, 2026 at 3:04 PM MST\" \"iso8601\": \"2026-01-02T15:04:00-08:00\" \"date\\_only\": \"2026-01-02\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_TimeoutPolicy",
      "title": "TimeoutPolicy",
      "slug": "/api/models/schema-1gu5od417l",
      "description": "Bounds the run as a whole. This message has no per-tool or per-loop execution timeout. Approval and client-result answer windows are configured separately on ToolExecutionPolicy; those waits do not cancel an already dispatched remote action.\n\nSet a finite [`timeouts.overallMs`](/api/models/schema-1gu5od417l#request-field-overallms) when the task needs a duration limit. It is measured from run start; zero or omission leaves the run-level duration unbounded.\n\nWhen Travila observes that the budget has elapsed, the run can end `TIMED_OUT` and pending calls can be closed with `endReason: \"run_timed_out\"`. A call still awaiting approval has not been dispatched. The timeout does not guarantee a remote action stops at that instant, establish whether it took effect, or roll it back.\n\nUse [`endReason`](/api/models/schema-1it6mqsqoo#response-field-endreason) to distinguish a run deadline from a call's own answer window: an unanswered approval reads `approval_timeout`, and an unanswered client tool reads `client_timeout`. Read the actual tool status too; approval and client-tool expiry can produce `FAILED` or `TIMED_OUT`. Run and individual tool outcomes are different fields.",
      "semantics": "Bounds the run as a whole. This message has no per-tool or per-loop execution timeout. Approval and client-result answer windows are configured separately on ToolExecutionPolicy; those waits do not cancel an already dispatched remote action.\n\nSet a finite [`timeouts.overallMs`](/api/models/schema-1gu5od417l#request-field-overallms) when the task needs a duration limit. It is measured from run start; zero or omission leaves the run-level duration unbounded.\n\nWhen Travila observes that the budget has elapsed, the run can end `TIMED_OUT` and pending calls can be closed with `endReason: \"run_timed_out\"`. A call still awaiting approval has not been dispatched. The timeout does not guarantee a remote action stops at that instant, establish whether it took effect, or roll it back.\n\nUse [`endReason`](/api/models/schema-1it6mqsqoo#response-field-endreason) to distinguish a run deadline from a call's own answer window: an unanswered approval reads `approval_timeout`, and an unanswered client tool reads `client_timeout`. Read the actual tool status too; approval and client-tool expiry can produce `FAILED` or `TIMED_OUT`. Run and individual tool outcomes are different fields.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TimeoutPolicy",
        "slug": "/api/models/schema-1gu5od417l"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "conversations:updatePromptVariables",
        "conversations:updateSettings",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "overallMs",
          "description": "Overall run budget in milliseconds, measured from run start. Zero or omission leaves this run-level bound unset. The workflow checks the deadline and can end with AGENT\\_STATUS\\_TIMED\\_OUT; it cannot cancel or undo a remote action already dispatched. Approval and client-result waits retain their separate finite limits.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_TimeoutPolicyInput",
      "title": "TimeoutPolicy",
      "slug": "/api/models/schema-1gu5od417l-input",
      "description": "Bounds the run as a whole. This message has no per-tool or per-loop execution timeout. Approval and client-result answer windows are configured separately on ToolExecutionPolicy; those waits do not cancel an already dispatched remote action.\n\nSet a finite [`timeouts.overallMs`](/api/models/schema-1gu5od417l#request-field-overallms) when the task needs a duration limit. It is measured from run start; zero or omission leaves the run-level duration unbounded.\n\nWhen Travila observes that the budget has elapsed, the run can end `TIMED_OUT` and pending calls can be closed with `endReason: \"run_timed_out\"`. A call still awaiting approval has not been dispatched. The timeout does not guarantee a remote action stops at that instant, establish whether it took effect, or roll it back.\n\nUse [`endReason`](/api/models/schema-1it6mqsqoo#response-field-endreason) to distinguish a run deadline from a call's own answer window: an unanswered approval reads `approval_timeout`, and an unanswered client tool reads `client_timeout`. Read the actual tool status too; approval and client-tool expiry can produce `FAILED` or `TIMED_OUT`. Run and individual tool outcomes are different fields.",
      "semantics": "Bounds the run as a whole. This message has no per-tool or per-loop execution timeout. Approval and client-result answer windows are configured separately on ToolExecutionPolicy; those waits do not cancel an already dispatched remote action.\n\nSet a finite [`timeouts.overallMs`](/api/models/schema-1gu5od417l#request-field-overallms) when the task needs a duration limit. It is measured from run start; zero or omission leaves the run-level duration unbounded.\n\nWhen Travila observes that the budget has elapsed, the run can end `TIMED_OUT` and pending calls can be closed with `endReason: \"run_timed_out\"`. A call still awaiting approval has not been dispatched. The timeout does not guarantee a remote action stops at that instant, establish whether it took effect, or roll it back.\n\nUse [`endReason`](/api/models/schema-1it6mqsqoo#response-field-endreason) to distinguish a run deadline from a call's own answer window: an unanswered approval reads `approval_timeout`, and an unanswered client tool reads `client_timeout`. Read the actual tool status too; approval and client-tool expiry can produce `FAILED` or `TIMED_OUT`. Run and individual tool outcomes are different fields.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TimeoutPolicy",
        "slug": "/api/models/schema-1gu5od417l"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "conversations:updateSettings",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "overallMs",
          "description": "Overall run budget in milliseconds, measured from run start. Zero or omission leaves this run-level bound unset. The workflow checks the deadline and can end with AGENT\\_STATUS\\_TIMED\\_OUT; it cannot cancel or undo a remote action already dispatched. Approval and client-result waits retain their separate finite limits.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolApproval",
      "title": "ToolApproval",
      "slug": "/api/models/schema-1j7jbpfsda",
      "description": "Approval decision for a specific tool call",
      "semantics": "Approval decision for a specific tool call",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolApproval",
        "slug": "/api/models/schema-1j7jbpfsda"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:submitToolApprovals"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "toolCallId",
          "description": "Identifier of the tool call whose execution is being approved or rejected.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolName",
          "description": "Name of the tool associated with the call or result.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "approved",
          "description": "Whether the caller approves execution of the identified tool call.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "reason",
          "description": "Optional rejection reason.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolCall",
      "title": "ToolCall",
      "slug": "/api/models/schema-1it6mqsqoo",
      "description": "A single structured tool call emitted by the model\n\n[`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat) is the client answer window. Expiry ends that wait and rejects late results; the timeout policy determines the outcome.",
      "semantics": "A single structured tool call emitted by the model\n\n[`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat) is the client answer window. Expiry ends that wait and rejects late results; the timeout policy determines the outcome.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolCall",
        "slug": "/api/models/schema-1it6mqsqoo"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:getToolCall",
        "conversations:listPendingApprovals",
        "conversations:listPendingClientTools",
        "conversations:mcpCallTool",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Provider-supplied call id.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name of the tool or function being invoked.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "argumentsJson",
          "description": "JSON object payload.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Execution status recorded for the tool call.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resultJson",
          "description": "Tool execution result (object).",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "executedAt",
          "description": "Time when the tool execution was recorded.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverId",
          "description": "Which server provides this tool (for MCP tools).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isClientTool",
          "description": "True if this is a client-side tool handled by client.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Tool description captured from the resolved tool definition when the call is emitted, preserving the definition used for historical calls even if the tool configuration later changes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "parametersJsonSchema",
          "description": "JSON Schema describing the tool’s input arguments.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requiresApprovalAt",
          "description": "Deadline for an approval decision, calculated from the effective approval timeout. This is not the time the call began waiting. An approval received after the deadline is rejected.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "approvedAt",
          "description": "Timestamp when approval decision was recorded (if approved/rejected)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "approvedBy",
          "description": "Identifier of the approver (user id, email, or actor key)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "executionDuration",
          "description": "End-to-end execution duration once terminal (includes tool server latency or client-side time)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endReason",
          "description": "Why this call ended, in one short phrase — \"approval rejected\", \"approval timeout\", or the underlying error. Set only once `status` is terminal, and empty on a clean COMPLETED.\n\nUse this reason to distinguish a rejection from a failure without parsing the tool result.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientToolDeadlineAt",
          "description": "Deadline by which the client must submit a result for this call, stamped when the call is dispatched to a caller.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "6vto7rka3s",
        "6vrs2kmfd4"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolCallCompletedEvent",
      "title": "ToolCallCompletedEvent",
      "slug": "/api/models/schema-po3pkfshjg",
      "description": "A tool call has one pre-terminal lifecycle notification, for execution starting or approval being required, followed by one terminal outcome. This pairing includes calls that require human approval. The terminal outcome is COMPLETED, FAILED, CANCELLED or TIMED\\_OUT.",
      "semantics": "A tool call has one pre-terminal lifecycle notification, for execution starting or approval being required, followed by one terminal outcome. This pairing includes calls that require human approval. The terminal outcome is COMPLETED, FAILED, CANCELLED or TIMED\\_OUT.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolCallCompletedEvent",
        "slug": "/api/models/schema-po3pkfshjg"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "toolCall",
          "description": "Final tool call. Its terminal status is COMPLETED, FAILED, CANCELLED or TIMED\\_OUT; inspect the result and end reason for the outcome.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "executionTimeMs",
          "description": "Wall-clock execution time in milliseconds (0 when unknown, e.g. dispatch error).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "6vrs2kmfd4"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolCallCompletedEventInput",
      "title": "ToolCallCompletedEvent",
      "slug": "/api/models/schema-po3pkfshjg-input",
      "description": "A tool call has one pre-terminal lifecycle notification, for execution starting or approval being required, followed by one terminal outcome. This pairing includes calls that require human approval. The terminal outcome is COMPLETED, FAILED, CANCELLED or TIMED\\_OUT.",
      "semantics": "A tool call has one pre-terminal lifecycle notification, for execution starting or approval being required, followed by one terminal outcome. This pairing includes calls that require human approval. The terminal outcome is COMPLETED, FAILED, CANCELLED or TIMED\\_OUT.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolCallCompletedEvent",
        "slug": "/api/models/schema-po3pkfshjg"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "toolCall",
          "description": "Final tool call. Its terminal status is COMPLETED, FAILED, CANCELLED or TIMED\\_OUT; inspect the result and end reason for the outcome.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "executionTimeMs",
          "description": "Wall-clock execution time in milliseconds (0 when unknown, e.g. dispatch error).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "6vrs2kmfd4"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolCallInput",
      "title": "ToolCall",
      "slug": "/api/models/schema-1it6mqsqoo-input",
      "description": "A single structured tool call emitted by the model\n\n[`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat) is the client answer window. Expiry ends that wait and rejects late results; the timeout policy determines the outcome.",
      "semantics": "A single structured tool call emitted by the model\n\n[`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat) is the client answer window. Expiry ends that wait and rejects late results; the timeout policy determines the outcome.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolCall",
        "slug": "/api/models/schema-1it6mqsqoo"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:mcpCallTool",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Provider-supplied call id.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name of the tool or function being invoked.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "argumentsJson",
          "description": "JSON object payload.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Execution status recorded for the tool call.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resultJson",
          "description": "Tool execution result (object).",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "executedAt",
          "description": "Time when the tool execution was recorded.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverId",
          "description": "Which server provides this tool (for MCP tools).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isClientTool",
          "description": "True if this is a client-side tool handled by client.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Tool description captured from the resolved tool definition when the call is emitted, preserving the definition used for historical calls even if the tool configuration later changes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "parametersJsonSchema",
          "description": "JSON Schema describing the tool’s input arguments.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requiresApprovalAt",
          "description": "Deadline for an approval decision, calculated from the effective approval timeout. This is not the time the call began waiting. An approval received after the deadline is rejected.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "approvedAt",
          "description": "Timestamp when approval decision was recorded (if approved/rejected)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "approvedBy",
          "description": "Identifier of the approver (user id, email, or actor key)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "executionDuration",
          "description": "End-to-end execution duration once terminal (includes tool server latency or client-side time)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endReason",
          "description": "Why this call ended, in one short phrase — \"approval rejected\", \"approval timeout\", or the underlying error. Set only once `status` is terminal, and empty on a clean COMPLETED.\n\nUse this reason to distinguish a rejection from a failure without parsing the tool result.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientToolDeadlineAt",
          "description": "Deadline by which the client must submit a result for this call, stamped when the call is dispatched to a caller.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "6vto7rka3s",
        "6vrs2kmfd4"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolCallStartedEvent",
      "title": "ToolCallStartedEvent",
      "slug": "/api/models/schema-po5rioe4il",
      "description": "Event for a tool call that has begun execution or is waiting for human approval. Check the event name and tool-call status to distinguish these cases; the event context identifies the conversation.",
      "semantics": "Event for a tool call that has begun execution or is waiting for human approval. Check the event name and tool-call status to distinguish these cases; the event context identifies the conversation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolCallStartedEvent",
        "slug": "/api/models/schema-po5rioe4il"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "toolCall",
          "description": "Tool-call snapshot before a result is available, including its identity, name, server and arguments. For llm.tool\\_call\\_started the status is EXECUTING; for llm.tool\\_call\\_approval\\_required it is REQUIRES\\_CONFIRMATION and requires\\_approval\\_at is the decision deadline. result\\_json is unset.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "6vto7rka3s"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolCallStartedEventInput",
      "title": "ToolCallStartedEvent",
      "slug": "/api/models/schema-po5rioe4il-input",
      "description": "Event for a tool call that has begun execution or is waiting for human approval. Check the event name and tool-call status to distinguish these cases; the event context identifies the conversation.",
      "semantics": "Event for a tool call that has begun execution or is waiting for human approval. Check the event name and tool-call status to distinguish these cases; the event context identifies the conversation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolCallStartedEvent",
        "slug": "/api/models/schema-po5rioe4il"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "toolCall",
          "description": "Tool-call snapshot before a result is available, including its identity, name, server and arguments. For llm.tool\\_call\\_started the status is EXECUTING; for llm.tool\\_call\\_approval\\_required it is REQUIRES\\_CONFIRMATION and requires\\_approval\\_at is the decision deadline. result\\_json is unset.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "6vto7rka3s"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolCategory",
      "title": "ToolCategory",
      "slug": "/api/models/enum-q97i14qn23",
      "description": "Tool Category for organizing and filtering tools",
      "semantics": "",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolCategory",
        "slug": "/api/models/enum-q97i14qn23"
      },
      "usedBy": [],
      "usedByRoots": [
        "API Enum/6u1ita10u0"
      ],
      "fields": []
    },
    {
      "schemaName": "llm_v1_common_v1_ToolCategoryInput",
      "title": "ToolCategory",
      "slug": "/api/models/enum-q97i14qn23-input",
      "description": "Tool Category for organizing and filtering tools",
      "semantics": "",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolCategory",
        "slug": "/api/models/enum-q97i14qn23"
      },
      "usedBy": [],
      "usedByRoots": [
        "API Enum/6u1ita10u0"
      ],
      "fields": []
    },
    {
      "schemaName": "llm_v1_common_v1_ToolChoice",
      "title": "ToolChoice",
      "slug": "/api/models/schema-1gmq0e4ilg",
      "description": "Policy selecting automatic tool choice, no tool use, or a named tool.",
      "semantics": "Policy selecting automatic tool choice, no tool use, or a named tool.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolChoice",
        "slug": "/api/models/schema-1gmq0e4ilg"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "kind",
          "description": "Discriminator selecting the representation or policy used by this message.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "specificToolName",
          "description": "Only used when kind = TOOL\\_CHOICE\\_KIND\\_SPECIFIC.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolChoiceInput",
      "title": "ToolChoice",
      "slug": "/api/models/schema-1gmq0e4ilg-input",
      "description": "Policy selecting automatic tool choice, no tool use, or a named tool.",
      "semantics": "Policy selecting automatic tool choice, no tool use, or a named tool.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolChoice",
        "slug": "/api/models/schema-1gmq0e4ilg"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "kind",
          "description": "Discriminator selecting the representation or policy used by this message.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "specificToolName",
          "description": "Only used when kind = TOOL\\_CHOICE\\_KIND\\_SPECIFIC.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolDefinition",
      "title": "ToolDefinition",
      "slug": "/api/models/schema-1gomaj79cc",
      "description": "A tool or function the model can request during generation.\n\n**[`serverId`](/api/models/schema-1gomaj79cc#request-field-serverid) is required** on every tool definition. Use `\"client\"` as the conventional value for tools you execute — client tools are matched by **name**, not by server.\n\n**[`parametersJsonSchema`](/api/models/schema-1gomaj79cc#request-field-parametersjsonschema)** is what the model reads to work out how to call your tool. Describe the fields accurately. It is not a validation contract — the platform never checks the model's arguments against it, so treat what arrives as untrusted.",
      "semantics": "A tool or function the model can request during generation.\n\n**[`serverId`](/api/models/schema-1gomaj79cc#request-field-serverid) is required** on every tool definition. Use `\"client\"` as the conventional value for tools you execute — client tools are matched by **name**, not by server.\n\n**[`parametersJsonSchema`](/api/models/schema-1gomaj79cc#request-field-parametersjsonschema)** is what the model reads to work out how to call your tool. Describe the fields accurately. It is not a validation contract — the platform never checks the model's arguments against it, so treat what arrives as untrusted.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolDefinition",
        "slug": "/api/models/schema-1gomaj79cc"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:mcpGetServerInfo",
        "conversations:mcpListTools",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "name",
          "description": "Name used to select and invoke the tool.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "description",
          "description": "Explanation of the tool’s purpose supplied to the model and callers.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "parametersJsonSchema",
          "description": "JSON Schema object.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional tool metadata (version, category, etc.).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverId",
          "description": "Required server identifier. Use `client` as the conventional value for client-side tools; those tools are matched by name, not by server.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "tags",
          "description": "Tool categorization tags.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "documentationUrl",
          "description": "Link to detailed documentation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "outputJsonSchema",
          "description": "Optional output schema (JSON Schema serialized as string) describing structured results",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolDefinitionInput",
      "title": "ToolDefinition",
      "slug": "/api/models/schema-1gomaj79cc-input",
      "description": "A tool or function the model can request during generation.\n\n**[`serverId`](/api/models/schema-1gomaj79cc#request-field-serverid) is required** on every tool definition. Use `\"client\"` as the conventional value for tools you execute — client tools are matched by **name**, not by server.\n\n**[`parametersJsonSchema`](/api/models/schema-1gomaj79cc#request-field-parametersjsonschema)** is what the model reads to work out how to call your tool. Describe the fields accurately. It is not a validation contract — the platform never checks the model's arguments against it, so treat what arrives as untrusted.",
      "semantics": "A tool or function the model can request during generation.\n\n**[`serverId`](/api/models/schema-1gomaj79cc#request-field-serverid) is required** on every tool definition. Use `\"client\"` as the conventional value for tools you execute — client tools are matched by **name**, not by server.\n\n**[`parametersJsonSchema`](/api/models/schema-1gomaj79cc#request-field-parametersjsonschema)** is what the model reads to work out how to call your tool. Describe the fields accurately. It is not a validation contract — the platform never checks the model's arguments against it, so treat what arrives as untrusted.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolDefinition",
        "slug": "/api/models/schema-1gomaj79cc"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "name",
          "description": "Name used to select and invoke the tool.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "description",
          "description": "Explanation of the tool’s purpose supplied to the model and callers.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "parametersJsonSchema",
          "description": "JSON Schema object.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional tool metadata (version, category, etc.).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverId",
          "description": "Required server identifier. Use `client` as the conventional value for client-side tools; those tools are matched by name, not by server.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "tags",
          "description": "Tool categorization tags.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "documentationUrl",
          "description": "Link to detailed documentation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "outputJsonSchema",
          "description": "Optional output schema (JSON Schema serialized as string) describing structured results",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolExecutionOrderRule",
      "title": "ToolExecutionOrderRule",
      "slug": "/api/models/schema-1h0coqd8e8",
      "description": "Per-run requested ordering rule for tool execution. The current generation workflow stores these rules but does not apply their patterns, server filters or weights.",
      "semantics": "Per-run requested ordering rule for tool execution. The current generation workflow stores these rules but does not apply their patterns, server filters or weights.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolExecutionOrderRule",
        "slug": "/api/models/schema-1h0coqd8e8"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "conversations:updatePromptVariables",
        "conversations:updateSettings",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "toolNamePatterns",
          "description": "Requested tool-name patterns; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverIds",
          "description": "Optional requested MCP server filter; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "weight",
          "description": "Requested ordering weight; not applied by the current generation workflow.\n\nlower executes first",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolExecutionOrderRuleInput",
      "title": "ToolExecutionOrderRule",
      "slug": "/api/models/schema-1h0coqd8e8-input",
      "description": "Per-run requested ordering rule for tool execution. The current generation workflow stores these rules but does not apply their patterns, server filters or weights.",
      "semantics": "Per-run requested ordering rule for tool execution. The current generation workflow stores these rules but does not apply their patterns, server filters or weights.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolExecutionOrderRule",
        "slug": "/api/models/schema-1h0coqd8e8"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "conversations:updateSettings",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "toolNamePatterns",
          "description": "Requested tool-name patterns; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverIds",
          "description": "Optional requested MCP server filter; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "weight",
          "description": "Requested ordering weight; not applied by the current generation workflow.\n\nlower executes first",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolExecutionPolicy",
      "title": "ToolExecutionPolicy",
      "slug": "/api/models/schema-1h2ji21uc4",
      "description": "Per-run policy for approvals, MCP execution concurrency, admitted tool-call budget and answer windows. Some stored controls are not enforced by the current workflow.\n\nIf an expected approval does not appear, inspect the tool/server require rules and auto-approve exceptions. Auto-approve takes precedence; server IDs are compared case-insensitively after trimming whitespace. An exception does not establish that the user reviewed the action.\n\nAn omitted or zero [`approvalTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-approvaltimeoutms) waits five minutes. At expiry, [`failOnApprovalTimeoutToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-failonapprovaltimeouttoolnamepatterns) yields `FAILED` for matching calls and `TIMED_OUT` for others; an unset list makes every expiry `FAILED`.\n\nThe retry controls [`retriableToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-retriabletoolnamepatterns), [`retryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-retryableerrorsubstrings), [`nonRetryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-nonretryableerrorsubstrings), [`maxRetries`](/api/models/schema-1h2ji21uc4#request-field-maxretries) and [`retryBackoff`](/api/models/schema-1h2ji21uc4#request-field-retrybackoff) are stored but do not schedule retries. Ordering rules, tie-breaking, the per-loop call cap, client-tool scheduling mode, failure mode and stop-on-failure rules are also not enforced; do not rely on them as execution or safety controls.\n\n[`maxTotalToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxtotaltoolcalls) limits admitted calls across the run; zero or omission leaves the cap unset. A client call consumes budget when armed. A routable MCP call consumes budget before approval, including when held for approval or later rejected. Unknown tools and calls refused because the cap is already exhausted do not consume budget. Further calls at the limit receive `FAILED` tool results naming the limit, which the model can use when continuing the run.\n\n[`maxParallelToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxparalleltoolcalls) limits concurrent MCP execution. Zero or one runs MCP calls sequentially; values greater than one permit concurrency. Client calls are armed separately, and your application controls their execution concurrency.\n\nChoose [`clientToolTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-clienttooltimeoutms) for your application's validation and action. Zero or omission gives a five-minute answer window; there is no unbounded setting. Each call returns its resolved [`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat).\n\nSee [Tool execution policies](/api/tool-execution/policies) for policy selection and caller reconciliation.",
      "semantics": "Per-run policy for approvals, MCP execution concurrency, admitted tool-call budget and answer windows. Some stored controls are not enforced by the current workflow.\n\nIf an expected approval does not appear, inspect the tool/server require rules and auto-approve exceptions. Auto-approve takes precedence; server IDs are compared case-insensitively after trimming whitespace. An exception does not establish that the user reviewed the action.\n\nAn omitted or zero [`approvalTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-approvaltimeoutms) waits five minutes. At expiry, [`failOnApprovalTimeoutToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-failonapprovaltimeouttoolnamepatterns) yields `FAILED` for matching calls and `TIMED_OUT` for others; an unset list makes every expiry `FAILED`.\n\nThe retry controls [`retriableToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-retriabletoolnamepatterns), [`retryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-retryableerrorsubstrings), [`nonRetryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-nonretryableerrorsubstrings), [`maxRetries`](/api/models/schema-1h2ji21uc4#request-field-maxretries) and [`retryBackoff`](/api/models/schema-1h2ji21uc4#request-field-retrybackoff) are stored but do not schedule retries. Ordering rules, tie-breaking, the per-loop call cap, client-tool scheduling mode, failure mode and stop-on-failure rules are also not enforced; do not rely on them as execution or safety controls.\n\n[`maxTotalToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxtotaltoolcalls) limits admitted calls across the run; zero or omission leaves the cap unset. A client call consumes budget when armed. A routable MCP call consumes budget before approval, including when held for approval or later rejected. Unknown tools and calls refused because the cap is already exhausted do not consume budget. Further calls at the limit receive `FAILED` tool results naming the limit, which the model can use when continuing the run.\n\n[`maxParallelToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxparalleltoolcalls) limits concurrent MCP execution. Zero or one runs MCP calls sequentially; values greater than one permit concurrency. Client calls are armed separately, and your application controls their execution concurrency.\n\nChoose [`clientToolTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-clienttooltimeoutms) for your application's validation and action. Zero or omission gives a five-minute answer window; there is no unbounded setting. Each call returns its resolved [`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat).\n\nSee [Tool execution policies](/api/tool-execution/policies) for policy selection and caller reconciliation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolExecutionPolicy",
        "slug": "/api/models/schema-1h2ji21uc4"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "conversations:updatePromptVariables",
        "conversations:updateSettings",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "requireApprovalToolNamePatterns",
          "description": "Tool-name patterns selecting calls that require an approval decision.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requireApprovalServerIds",
          "description": "MCP server identifiers whose calls require approval. IDs are compared case-insensitively after trimming whitespace.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "autoApproveToolNamePatterns",
          "description": "Tool-name patterns whose matching calls may be approved automatically.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "autoApproveServerIds",
          "description": "MCP server identifiers exempted from approval require rules. IDs are compared case-insensitively after trimming whitespace.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "approvalMode",
          "description": "How to schedule execution when approvals are required for some tools\n\ndefault: APPROVAL\\_MODE\\_MIXED",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientToolMode",
          "description": "Stored requested client-tool scheduling mode; not enforced by the current workflow.\n\ndefault: CLIENT\\_TOOL\\_MODE\\_MIXED",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "approvalTimeoutMs",
          "description": "Time allowed for an approval decision, in milliseconds. Zero or omission selects the five-minute default; a positive value overrides it. There is no unbounded wait setting. At expiry, matching fail\\_on\\_approval\\_timeout\\_tool\\_name\\_patterns produces FAILED; other calls become TIMED\\_OUT. An empty pattern list makes every expiry FAILED.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "failOnApprovalTimeoutToolNamePatterns",
          "description": "Selects approval timeouts reported as FAILED; nonmatching calls become TIMED\\_OUT. An empty list makes every approval expiry FAILED. Global failure\\_mode is not enforced.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "orderRules",
          "description": "Stored requested ordering rules; not applied by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stableSortByCallIndexOnTie",
          "description": "Stored requested ordering tie-breaker; not applied by the current generation workflow.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxParallelToolCalls",
          "description": "Maximum concurrent MCP tool executions. Zero, omission or one runs MCP calls sequentially; larger values permit concurrency. Client calls are armed separately, and their execution concurrency is controlled by the caller application.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxToolCallsPerLoop",
          "description": "Stored requested per-loop tool-call cap; not enforced by the current generation workflow.\n\n0 = no cap",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxTotalToolCalls",
          "description": "Maximum admitted tool calls across the run; zero or omission leaves the cap unset. Client calls count when armed. Routable MCP calls count before approval, including calls later rejected. Unknown tools and calls refused by an exhausted cap do not count.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retriableToolNamePatterns",
          "description": "Stored requested retry selection; does not enable retries in the current workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxRetries",
          "description": "Stored requested retry count; does not enable retries in the current workflow.\n\nper tool-call",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retryBackoff",
          "description": "Stored requested retry delays; not applied by the current generation workflow.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retryableErrorSubstrings",
          "description": "Stored requested retryable-error selection; not evaluated by the current workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nonRetryableErrorSubstrings",
          "description": "Stored requested retry exclusions; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timeouts",
          "description": "Overall execution time budget for the generation run.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientToolTimeoutMs",
          "description": "Time allowed for a client-side tool result, in milliseconds. Zero or omission selects the five-minute default; a positive value overrides it. There is no unbounded wait. The resolved answer deadline is returned as clientToolDeadlineAt on each call. A result arriving after the deadline is rejected. At expiry, an empty or matching fail\\_on\\_approval\\_timeout\\_tool\\_name\\_patterns list yields FAILED; other calls become TIMED\\_OUT. Expiry closes the answer window and does not cancel a client action already in progress.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "failureMode",
          "description": "Stored requested failure action; not enforced by the current generation workflow.\n\ndefault if no rule matches",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stopOnFailureRules",
          "description": "Stored requested stop rules; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_ToolExecutionPolicyInput",
      "title": "ToolExecutionPolicy",
      "slug": "/api/models/schema-1h2ji21uc4-input",
      "description": "Per-run policy for approvals, MCP execution concurrency, admitted tool-call budget and answer windows. Some stored controls are not enforced by the current workflow.\n\nIf an expected approval does not appear, inspect the tool/server require rules and auto-approve exceptions. Auto-approve takes precedence; server IDs are compared case-insensitively after trimming whitespace. An exception does not establish that the user reviewed the action.\n\nAn omitted or zero [`approvalTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-approvaltimeoutms) waits five minutes. At expiry, [`failOnApprovalTimeoutToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-failonapprovaltimeouttoolnamepatterns) yields `FAILED` for matching calls and `TIMED_OUT` for others; an unset list makes every expiry `FAILED`.\n\nThe retry controls [`retriableToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-retriabletoolnamepatterns), [`retryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-retryableerrorsubstrings), [`nonRetryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-nonretryableerrorsubstrings), [`maxRetries`](/api/models/schema-1h2ji21uc4#request-field-maxretries) and [`retryBackoff`](/api/models/schema-1h2ji21uc4#request-field-retrybackoff) are stored but do not schedule retries. Ordering rules, tie-breaking, the per-loop call cap, client-tool scheduling mode, failure mode and stop-on-failure rules are also not enforced; do not rely on them as execution or safety controls.\n\n[`maxTotalToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxtotaltoolcalls) limits admitted calls across the run; zero or omission leaves the cap unset. A client call consumes budget when armed. A routable MCP call consumes budget before approval, including when held for approval or later rejected. Unknown tools and calls refused because the cap is already exhausted do not consume budget. Further calls at the limit receive `FAILED` tool results naming the limit, which the model can use when continuing the run.\n\n[`maxParallelToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxparalleltoolcalls) limits concurrent MCP execution. Zero or one runs MCP calls sequentially; values greater than one permit concurrency. Client calls are armed separately, and your application controls their execution concurrency.\n\nChoose [`clientToolTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-clienttooltimeoutms) for your application's validation and action. Zero or omission gives a five-minute answer window; there is no unbounded setting. Each call returns its resolved [`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat).\n\nSee [Tool execution policies](/api/tool-execution/policies) for policy selection and caller reconciliation.",
      "semantics": "Per-run policy for approvals, MCP execution concurrency, admitted tool-call budget and answer windows. Some stored controls are not enforced by the current workflow.\n\nIf an expected approval does not appear, inspect the tool/server require rules and auto-approve exceptions. Auto-approve takes precedence; server IDs are compared case-insensitively after trimming whitespace. An exception does not establish that the user reviewed the action.\n\nAn omitted or zero [`approvalTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-approvaltimeoutms) waits five minutes. At expiry, [`failOnApprovalTimeoutToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-failonapprovaltimeouttoolnamepatterns) yields `FAILED` for matching calls and `TIMED_OUT` for others; an unset list makes every expiry `FAILED`.\n\nThe retry controls [`retriableToolNamePatterns`](/api/models/schema-1h2ji21uc4#request-field-retriabletoolnamepatterns), [`retryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-retryableerrorsubstrings), [`nonRetryableErrorSubstrings`](/api/models/schema-1h2ji21uc4#request-field-nonretryableerrorsubstrings), [`maxRetries`](/api/models/schema-1h2ji21uc4#request-field-maxretries) and [`retryBackoff`](/api/models/schema-1h2ji21uc4#request-field-retrybackoff) are stored but do not schedule retries. Ordering rules, tie-breaking, the per-loop call cap, client-tool scheduling mode, failure mode and stop-on-failure rules are also not enforced; do not rely on them as execution or safety controls.\n\n[`maxTotalToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxtotaltoolcalls) limits admitted calls across the run; zero or omission leaves the cap unset. A client call consumes budget when armed. A routable MCP call consumes budget before approval, including when held for approval or later rejected. Unknown tools and calls refused because the cap is already exhausted do not consume budget. Further calls at the limit receive `FAILED` tool results naming the limit, which the model can use when continuing the run.\n\n[`maxParallelToolCalls`](/api/models/schema-1h2ji21uc4#request-field-maxparalleltoolcalls) limits concurrent MCP execution. Zero or one runs MCP calls sequentially; values greater than one permit concurrency. Client calls are armed separately, and your application controls their execution concurrency.\n\nChoose [`clientToolTimeoutMs`](/api/models/schema-1h2ji21uc4#request-field-clienttooltimeoutms) for your application's validation and action. Zero or omission gives a five-minute answer window; there is no unbounded setting. Each call returns its resolved [`clientToolDeadlineAt`](/api/models/schema-1it6mqsqoo#response-field-clienttooldeadlineat).\n\nSee [Tool execution policies](/api/tool-execution/policies) for policy selection and caller reconciliation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ToolExecutionPolicy",
        "slug": "/api/models/schema-1h2ji21uc4"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "conversations:updateSettings",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "requireApprovalToolNamePatterns",
          "description": "Tool-name patterns selecting calls that require an approval decision.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requireApprovalServerIds",
          "description": "MCP server identifiers whose calls require approval. IDs are compared case-insensitively after trimming whitespace.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "autoApproveToolNamePatterns",
          "description": "Tool-name patterns whose matching calls may be approved automatically.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "autoApproveServerIds",
          "description": "MCP server identifiers exempted from approval require rules. IDs are compared case-insensitively after trimming whitespace.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "approvalMode",
          "description": "How to schedule execution when approvals are required for some tools\n\ndefault: APPROVAL\\_MODE\\_MIXED",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientToolMode",
          "description": "Stored requested client-tool scheduling mode; not enforced by the current workflow.\n\ndefault: CLIENT\\_TOOL\\_MODE\\_MIXED",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "approvalTimeoutMs",
          "description": "Time allowed for an approval decision, in milliseconds. Zero or omission selects the five-minute default; a positive value overrides it. There is no unbounded wait setting. At expiry, matching fail\\_on\\_approval\\_timeout\\_tool\\_name\\_patterns produces FAILED; other calls become TIMED\\_OUT. An empty pattern list makes every expiry FAILED.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "failOnApprovalTimeoutToolNamePatterns",
          "description": "Selects approval timeouts reported as FAILED; nonmatching calls become TIMED\\_OUT. An empty list makes every approval expiry FAILED. Global failure\\_mode is not enforced.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "orderRules",
          "description": "Stored requested ordering rules; not applied by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stableSortByCallIndexOnTie",
          "description": "Stored requested ordering tie-breaker; not applied by the current generation workflow.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxParallelToolCalls",
          "description": "Maximum concurrent MCP tool executions. Zero, omission or one runs MCP calls sequentially; larger values permit concurrency. Client calls are armed separately, and their execution concurrency is controlled by the caller application.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxToolCallsPerLoop",
          "description": "Stored requested per-loop tool-call cap; not enforced by the current generation workflow.\n\n0 = no cap",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxTotalToolCalls",
          "description": "Maximum admitted tool calls across the run; zero or omission leaves the cap unset. Client calls count when armed. Routable MCP calls count before approval, including calls later rejected. Unknown tools and calls refused by an exhausted cap do not count.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retriableToolNamePatterns",
          "description": "Stored requested retry selection; does not enable retries in the current workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxRetries",
          "description": "Stored requested retry count; does not enable retries in the current workflow.\n\nper tool-call",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retryBackoff",
          "description": "Stored requested retry delays; not applied by the current generation workflow.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retryableErrorSubstrings",
          "description": "Stored requested retryable-error selection; not evaluated by the current workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nonRetryableErrorSubstrings",
          "description": "Stored requested retry exclusions; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timeouts",
          "description": "Overall execution time budget for the generation run.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientToolTimeoutMs",
          "description": "Time allowed for a client-side tool result, in milliseconds. Zero or omission selects the five-minute default; a positive value overrides it. There is no unbounded wait. The resolved answer deadline is returned as clientToolDeadlineAt on each call. A result arriving after the deadline is rejected. At expiry, an empty or matching fail\\_on\\_approval\\_timeout\\_tool\\_name\\_patterns list yields FAILED; other calls become TIMED\\_OUT. Expiry closes the answer window and does not cancel a client action already in progress.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "failureMode",
          "description": "Stored requested failure action; not enforced by the current generation workflow.\n\ndefault if no rule matches",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stopOnFailureRules",
          "description": "Stored requested stop rules; not evaluated by the current generation workflow.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_TurnContextConfig",
      "title": "TurnContextConfig",
      "slug": "/api/models/schema-1h5dj58uph",
      "description": "Configuration for turn-aware LLM generation\n\nTurn context tells the model the current generation number and remaining allowance, with tool guidance based on that allowance. This annotation is enabled by default and is not persisted in message history. Its presentation options belong in the [generation configuration reference](/api/conversations/update-default-generation-config); the annotation itself does not change the run limit.",
      "semantics": "Configuration for turn-aware LLM generation\n\nTurn context tells the model the current generation number and remaining allowance, with tool guidance based on that allowance. This annotation is enabled by default and is not persisted in message history. Its presentation options belong in the [generation configuration reference](/api/conversations/update-default-generation-config); the annotation itself does not change the run limit.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TurnContextConfig",
        "slug": "/api/models/schema-1h5dj58uph"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "enabled",
          "description": "Enable turn context injection into system prompt Default: true",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeToolGuidance",
          "description": "Include tool usage guidance based on remaining turns Default: false (can enable for agentic workflows)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "format",
          "description": "Format for turn context \"minimal\": \"\\[Turn 2/5]\" \"standard\": \"\\[Turn 2 of 5 - 3 turns remaining. Plan your response accordingly.]\" \"verbose\": Includes detailed behavioral guidance Default: \"standard\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_TurnContextConfigInput",
      "title": "TurnContextConfig",
      "slug": "/api/models/schema-1h5dj58uph-input",
      "description": "Configuration for turn-aware LLM generation\n\nTurn context tells the model the current generation number and remaining allowance, with tool guidance based on that allowance. This annotation is enabled by default and is not persisted in message history. Its presentation options belong in the [generation configuration reference](/api/conversations/update-default-generation-config); the annotation itself does not change the run limit.",
      "semantics": "Configuration for turn-aware LLM generation\n\nTurn context tells the model the current generation number and remaining allowance, with tool guidance based on that allowance. This annotation is enabled by default and is not persisted in message history. Its presentation options belong in the [generation configuration reference](/api/conversations/update-default-generation-config); the annotation itself does not change the run limit.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TurnContextConfig",
        "slug": "/api/models/schema-1h5dj58uph"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "enabled",
          "description": "Enable turn context injection into system prompt Default: true",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeToolGuidance",
          "description": "Include tool usage guidance based on remaining turns Default: false (can enable for agentic workflows)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "format",
          "description": "Format for turn context \"minimal\": \"\\[Turn 2/5]\" \"standard\": \"\\[Turn 2 of 5 - 3 turns remaining. Plan your response accordingly.]\" \"verbose\": Includes detailed behavioral guidance Default: \"standard\"",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_TurnInfo",
      "title": "TurnInfo",
      "slug": "/api/models/schema-1ilcikuhu8",
      "description": "Turn position within an agentic generation run",
      "semantics": "Turn position within an agentic generation run",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TurnInfo",
        "slug": "/api/models/schema-1ilcikuhu8"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "currentTurn",
          "description": "Current turn position within the generation run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxTurns",
          "description": "Maximum turns configured for the generation run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_TurnInfoInput",
      "title": "TurnInfo",
      "slug": "/api/models/schema-1ilcikuhu8-input",
      "description": "Turn position within an agentic generation run",
      "semantics": "Turn position within an agentic generation run",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TurnInfo",
        "slug": "/api/models/schema-1ilcikuhu8"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "currentTurn",
          "description": "Current turn position within the generation run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxTurns",
          "description": "Maximum turns configured for the generation run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_UrlCitation",
      "title": "UrlCitation",
      "slug": "/api/models/schema-1hujls61ng",
      "description": "Web source and character range cited in generated message content.",
      "semantics": "Web source and character range cited in generated message content.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UrlCitation",
        "slug": "/api/models/schema-1hujls61ng"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "url",
          "description": "URL of the cited web page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "title",
          "description": "Title of the web page cited by this annotation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Optional excerpt or snippet of the cited web page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startIndex",
          "description": "Character index in message content.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endIndex",
          "description": "Character index in message content.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_UrlCitationInput",
      "title": "UrlCitation",
      "slug": "/api/models/schema-1hujls61ng-input",
      "description": "Web source and character range cited in generated message content.",
      "semantics": "Web source and character range cited in generated message content.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UrlCitation",
        "slug": "/api/models/schema-1hujls61ng"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "url",
          "description": "URL of the cited web page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "title",
          "description": "Title of the web page cited by this annotation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Optional excerpt or snippet of the cited web page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startIndex",
          "description": "Character index in message content.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endIndex",
          "description": "Character index in message content.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_Usage",
      "title": "Usage",
      "slug": "/api/models/schema-1j1vov2uoh",
      "description": "Usage accounting",
      "semantics": "Usage accounting",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Usage",
        "slug": "/api/models/schema-1j1vov2uoh"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "promptTokens",
          "description": "Prompt-token usage reported by the model provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completionTokens",
          "description": "Completion-token usage reported by the model provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalTokens",
          "description": "Total token usage reported by the model provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "costEstimate",
          "description": "Estimated cost in USD.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completionTokensDetails",
          "description": "Breakdown of completion tokens.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promptTokensDetails",
          "description": "Breakdown of prompt tokens (cache).",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "costDetails",
          "description": "Breakdown of upstream provider cost (BYOK routes).",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isByok",
          "description": "Whether this generation used the customer's own model-provider key.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_UsageByModel",
      "title": "UsageByModel",
      "slug": "/api/models/schema-po7orad6ac",
      "description": "Usage attributed to a single model within one generation run.\n\nLLMGenerationCompletedEvent.usage is the run-level aggregate, summed across every model the run called. A tool-using turn routinely spans several models, and the rate card prices per model, so billing needs the breakdown alongside the aggregate rather than instead of it. One entry per distinct model.",
      "semantics": "Usage attributed to a single model within one generation run.\n\nLLMGenerationCompletedEvent.usage is the run-level aggregate, summed across every model the run called. A tool-using turn routinely spans several models, and the rate card prices per model, so billing needs the breakdown alongside the aggregate rather than instead of it. One entry per distinct model.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UsageByModel",
        "slug": "/api/models/schema-po7orad6ac"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "model",
          "description": "Model identifier as recorded on the assistant message that produced it.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "calls",
          "description": "Provider completions attributed to this model within the run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usage",
          "description": "Same shape as the run aggregate, scoped to this model.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_UsageByModelInput",
      "title": "UsageByModel",
      "slug": "/api/models/schema-po7orad6ac-input",
      "description": "Usage attributed to a single model within one generation run.\n\nLLMGenerationCompletedEvent.usage is the run-level aggregate, summed across every model the run called. A tool-using turn routinely spans several models, and the rate card prices per model, so billing needs the breakdown alongside the aggregate rather than instead of it. One entry per distinct model.",
      "semantics": "Usage attributed to a single model within one generation run.\n\nLLMGenerationCompletedEvent.usage is the run-level aggregate, summed across every model the run called. A tool-using turn routinely spans several models, and the rate card prices per model, so billing needs the breakdown alongside the aggregate rather than instead of it. One entry per distinct model.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UsageByModel",
        "slug": "/api/models/schema-po7orad6ac"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [],
      "fields": [
        {
          "name": "model",
          "description": "Model identifier as recorded on the assistant message that produced it.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "calls",
          "description": "Provider completions attributed to this model within the run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usage",
          "description": "Same shape as the run aggregate, scoped to this model.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_UsageInput",
      "title": "Usage",
      "slug": "/api/models/schema-1j1vov2uoh-input",
      "description": "Usage accounting",
      "semantics": "Usage accounting",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Usage",
        "slug": "/api/models/schema-1j1vov2uoh"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:appendMessage",
        "conversations:sendMessage",
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "promptTokens",
          "description": "Prompt-token usage reported by the model provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completionTokens",
          "description": "Completion-token usage reported by the model provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalTokens",
          "description": "Total token usage reported by the model provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "costEstimate",
          "description": "Estimated cost in USD.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completionTokensDetails",
          "description": "Breakdown of completion tokens.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promptTokensDetails",
          "description": "Breakdown of prompt tokens (cache).",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "costDetails",
          "description": "Breakdown of upstream provider cost (BYOK routes).",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isByok",
          "description": "Whether this generation used the customer's own model-provider key.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84ptg9ajvv"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_UsageOptions",
      "title": "UsageOptions",
      "slug": "/api/models/schema-1h615aquj0",
      "description": "Usage accounting preferences",
      "semantics": "Usage accounting preferences",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UsageOptions",
        "slug": "/api/models/schema-1h615aquj0"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:getAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:listAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:deleteMessageRating",
        "conversations:getConversationState",
        "conversations:rateMessage",
        "conversations:sendMessageSync",
        "conversations:submitClientToolResultsSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:getEndUser"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "include",
          "description": "Whether usage accounting should be included in the provider response.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_UsageOptionsInput",
      "title": "UsageOptions",
      "slug": "/api/models/schema-1h615aquj0-input",
      "description": "Usage accounting preferences",
      "semantics": "Usage accounting preferences",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UsageOptions",
        "slug": "/api/models/schema-1h615aquj0"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:createAgentProfile",
        "agent-profiles:importAgentProfiles",
        "agent-profiles:updateAgentProfile",
        "conversations:appendMessage",
        "conversations:createThread",
        "conversations:sendMessage",
        "conversations:sendMessageSync",
        "conversations:updateContextManagementSettings",
        "conversations:updateDefaultGenerationConfig",
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [
        "API Schema/9frhv4euve",
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "include",
          "description": "Whether usage accounting should be included in the provider response.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ],
      "usedByEvents": [
        "9i3l70sln0",
        "84rgqjjrl0"
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_Vector",
      "title": "Vector",
      "slug": "/api/models/schema-q9cp251mpk",
      "description": "Canonical vector record shared across vector DB services",
      "semantics": "Canonical vector record shared across vector DB services",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Vector",
        "slug": "/api/models/schema-q9cp251mpk"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6vhb5mpe0m"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Identifier used to address the vector record within its namespace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "values",
          "description": "Dense vector values.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sparseValues",
          "description": "Optional sparse component.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Provider metadata (JSON object).",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "namespace",
          "description": "Optional namespace/bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_VectorInput",
      "title": "Vector",
      "slug": "/api/models/schema-q9cp251mpk-input",
      "description": "Canonical vector record shared across vector DB services",
      "semantics": "Canonical vector record shared across vector DB services",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Vector",
        "slug": "/api/models/schema-q9cp251mpk"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6vhb5mpe0m"
      ],
      "fields": [
        {
          "name": "id",
          "description": "Identifier used to address the vector record within its namespace.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "values",
          "description": "Dense vector values.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sparseValues",
          "description": "Optional sparse component.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Provider metadata (JSON object).",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "namespace",
          "description": "Optional namespace/bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_common_v1_VectorMetric",
      "title": "VectorMetric",
      "slug": "/api/models/enum-q9e32qbsm3",
      "description": "Distance/similarity metric for vector indexes",
      "semantics": "",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "VectorMetric",
        "slug": "/api/models/enum-q9e32qbsm3"
      },
      "usedBy": [],
      "usedByRoots": [
        "API Enum/6u3eomk7tb"
      ],
      "fields": []
    },
    {
      "schemaName": "llm_v1_common_v1_VectorMetricInput",
      "title": "VectorMetric",
      "slug": "/api/models/enum-q9e32qbsm3-input",
      "description": "Distance/similarity metric for vector indexes",
      "semantics": "",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "VectorMetric",
        "slug": "/api/models/enum-q9e32qbsm3"
      },
      "usedBy": [],
      "usedByRoots": [
        "API Enum/6u3eomk7tb"
      ],
      "fields": []
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_AgentProfileVersionInfo",
      "title": "AgentProfileVersionInfo",
      "slug": "/api/models/schema-ohrdb6rrpn",
      "description": "Version identifier and creation time for an immutable agent-profile revision.",
      "semantics": "Version identifier and creation time for an immutable agent-profile revision.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "AgentProfileVersionInfo",
        "slug": "/api/models/schema-ohrdb6rrpn"
      },
      "operationOwners": [],
      "usedBy": [
        "agent-profiles:listAgentProfileVersions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "version",
          "description": "Version of the resource represented by this message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_CreateAgentProfileRequest",
      "title": "CreateAgentProfileRequest",
      "slug": "/api/models/schema-pl75kqnfnk",
      "description": "Inputs for creating a project-scoped agent profile with prompt and generation settings.",
      "semantics": "Inputs for creating a project-scoped agent profile with prompt and generation settings.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateAgentProfileRequest",
        "slug": "/api/models/schema-pl75kqnfnk"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:createAgentProfile",
          "slug": "/api/agent-profiles/create-agent-profile",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:createAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project owning the agent-profile library. Use default for the default project.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profile",
          "description": "Agent profile definition to add to the project library.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_CreateAgentProfileResponse",
      "title": "CreateAgentProfileResponse",
      "slug": "/api/models/schema-pl9aohbc1k",
      "description": "Result payload for creating a project-scoped agent profile with prompt and generation settings.",
      "semantics": "Result payload for creating a project-scoped agent profile with prompt and generation settings.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateAgentProfileResponse",
        "slug": "/api/models/schema-pl9aohbc1k"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:createAgentProfile",
          "slug": "/api/agent-profiles/create-agent-profile",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:createAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profile",
          "description": "Echoes the stored profile.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_CreatePromptFragmentRequest",
      "title": "CreatePromptFragmentRequest",
      "slug": "/api/models/schema-oubvvcrkj4",
      "description": "Inputs for creating a reusable block of prompt-template text in the project library.",
      "semantics": "Inputs for creating a reusable block of prompt-template text in the project library.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreatePromptFragmentRequest",
        "slug": "/api/models/schema-oubvvcrkj4"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:createPromptFragment",
          "slug": "/api/agent-profiles/create-prompt-fragment",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:createPromptFragment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Project whose prompt library receives the fragment. If omitted, the operation uses `default`.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fragment",
          "description": "Reusable prompt fragment definition to add to the project library.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_CreatePromptFragmentResponse",
      "title": "CreatePromptFragmentResponse",
      "slug": "/api/models/schema-oudjirakt0",
      "description": "Result payload for creating a reusable block of prompt-template text in the project library.",
      "semantics": "Result payload for creating a reusable block of prompt-template text in the project library.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreatePromptFragmentResponse",
        "slug": "/api/models/schema-oudjirakt0"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:createPromptFragment",
          "slug": "/api/agent-profiles/create-prompt-fragment",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:createPromptFragment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fragment",
          "description": "Echoes the stored fragment.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_DeleteAgentProfileRequest",
      "title": "DeleteAgentProfileRequest",
      "slug": "/api/models/schema-ouf2nlg0mu",
      "description": "Inputs for removing an agent profile from the project library.",
      "semantics": "Inputs for removing an agent profile from the project library.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteAgentProfileRequest",
        "slug": "/api/models/schema-ouf2nlg0mu"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:deleteAgentProfile",
          "slug": "/api/agent-profiles/delete-agent-profile",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:deleteAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_DeleteAgentProfileResponse",
      "title": "DeleteAgentProfileResponse",
      "slug": "/api/models/schema-ohtsojld5t",
      "description": "Response schema for removing an agent profile from the project library; no response fields are declared.",
      "semantics": "Response schema for removing an agent profile from the project library; no response fields are declared.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteAgentProfileResponse",
        "slug": "/api/models/schema-ohtsojld5t"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:deleteAgentProfile",
          "slug": "/api/agent-profiles/delete-agent-profile",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:deleteAgentProfile"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_DeletePromptFragmentRequest",
      "title": "DeletePromptFragmentRequest",
      "slug": "/api/models/schema-ouhmqknk22",
      "description": "Inputs for removing a reusable prompt fragment from the project library.",
      "semantics": "Inputs for removing a reusable prompt fragment from the project library.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeletePromptFragmentRequest",
        "slug": "/api/models/schema-ouhmqknk22"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:deletePromptFragment",
          "slug": "/api/agent-profiles/delete-prompt-fragment",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:deletePromptFragment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fragmentId",
          "description": "Identifier of the reusable prompt fragment.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_DeletePromptFragmentResponse",
      "title": "DeletePromptFragmentResponse",
      "slug": "/api/models/schema-ohviv63oah",
      "description": "Response schema for removing a reusable prompt fragment from the project library; no response fields are declared.",
      "semantics": "Response schema for removing a reusable prompt fragment from the project library; no response fields are declared.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeletePromptFragmentResponse",
        "slug": "/api/models/schema-ohviv63oah"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:deletePromptFragment",
          "slug": "/api/agent-profiles/delete-prompt-fragment",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:deletePromptFragment"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileLibraryRequest",
      "title": "GetAgentProfileLibraryRequest",
      "slug": "/api/models/schema-oujh0pnq6u",
      "description": "Inputs for reading profile metadata available for discovery in the project library.",
      "semantics": "Inputs for reading profile metadata available for discovery in the project library.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetAgentProfileLibraryRequest",
        "slug": "/api/models/schema-oujh0pnq6u"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:getAgentProfileLibrary",
          "slug": "/api/agent-profiles/get-agent-profile-library",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:getAgentProfileLibrary"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation. `default` identifies the default project.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileLibraryResponse",
      "title": "GetAgentProfileLibraryResponse",
      "slug": "/api/models/schema-pbg9rn11k9",
      "description": "Result payload for reading profile metadata available for discovery in the project library.",
      "semantics": "Result payload for reading profile metadata available for discovery in the project library.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetAgentProfileLibraryResponse",
        "slug": "/api/models/schema-pbg9rn11k9"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:getAgentProfileLibrary",
          "slug": "/api/agent-profiles/get-agent-profile-library",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:getAgentProfileLibrary"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "library",
          "description": "Profile identity and selection metadata for the project.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileRequest",
      "title": "GetAgentProfileRequest",
      "slug": "/api/models/schema-oul55kljl1",
      "description": "Inputs for retrieving a selected agent profile and its configuration.",
      "semantics": "Inputs for retrieving a selected agent profile and its configuration.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetAgentProfileRequest",
        "slug": "/api/models/schema-oul55kljl1"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:getAgentProfile",
          "slug": "/api/agent-profiles/get-agent-profile",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:getAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "version",
          "description": "Immutable profile version to retrieve. Zero or omission selects the latest version. A requested version that does not exist returns NOT\\_FOUND.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileResponse",
      "title": "GetAgentProfileResponse",
      "slug": "/api/models/schema-plbgc3cd04",
      "description": "Result payload for retrieving a selected agent profile and its configuration.",
      "semantics": "Result payload for retrieving a selected agent profile and its configuration.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetAgentProfileResponse",
        "slug": "/api/models/schema-plbgc3cd04"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:getAgentProfile",
          "slug": "/api/agent-profiles/get-agent-profile",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:getAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profile",
          "description": "Agent profile returned by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentRequest",
      "title": "GetPromptFragmentRequest",
      "slug": "/api/models/schema-oungvgc3m0",
      "description": "Inputs for retrieving a reusable prompt fragment by its identifier.",
      "semantics": "Inputs for retrieving a reusable prompt fragment by its identifier.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetPromptFragmentRequest",
        "slug": "/api/models/schema-oungvgc3m0"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:getPromptFragment",
          "slug": "/api/agent-profiles/get-prompt-fragment",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:getPromptFragment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fragmentId",
          "description": "Identifier of the reusable prompt fragment.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentResponse",
      "title": "GetPromptFragmentResponse",
      "slug": "/api/models/schema-oup3pbqblo",
      "description": "Result payload for retrieving a reusable prompt fragment by its identifier.",
      "semantics": "Result payload for retrieving a reusable prompt fragment by its identifier.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetPromptFragmentResponse",
        "slug": "/api/models/schema-oup3pbqblo"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:getPromptFragment",
          "slug": "/api/agent-profiles/get-prompt-fragment",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:getPromptFragment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fragment",
          "description": "Reusable prompt fragment returned by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentSetRequest",
      "title": "GetPromptFragmentSetRequest",
      "slug": "/api/models/schema-ouqfuc3tsf",
      "description": "Inputs for reading an immutable version of the project’s prompt-fragment set.",
      "semantics": "Inputs for reading an immutable version of the project’s prompt-fragment set.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetPromptFragmentSetRequest",
        "slug": "/api/models/schema-ouqfuc3tsf"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:getPromptFragmentSet",
          "slug": "/api/agent-profiles/get-prompt-fragment-set",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:getPromptFragmentSet"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "setVersion",
          "description": "Version identifying the immutable prompt-fragment set.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentSetResponse",
      "title": "GetPromptFragmentSetResponse",
      "slug": "/api/models/schema-ouskcjj101",
      "description": "Result payload for reading an immutable version of the project’s prompt-fragment set.",
      "semantics": "Result payload for reading an immutable version of the project’s prompt-fragment set.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetPromptFragmentSetResponse",
        "slug": "/api/models/schema-ouskcjj101"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:getPromptFragmentSet",
          "slug": "/api/agent-profiles/get-prompt-fragment-set",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:getPromptFragmentSet"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "setVersion",
          "description": "Version identifying the immutable prompt-fragment set.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fragments",
          "description": "Ordered by fragment\\_id.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_ImportAgentProfilesRequest",
      "title": "ImportAgentProfilesRequest",
      "slug": "/api/models/schema-pldfk13doh",
      "description": "Inputs for converting a source prompt library into project profiles. Every shared block referenced by an include must be supplied in fragments so the importer can resolve the library.",
      "semantics": "Inputs for converting a source prompt library into project profiles. Every shared block referenced by an include must be supplied in fragments so the importer can resolve the library.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ImportAgentProfilesRequest",
        "slug": "/api/models/schema-pldfk13doh"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:importAgentProfiles",
          "slug": "/api/agent-profiles/import-agent-profiles",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:importAgentProfiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "templates",
          "description": "Source persona templates to convert into conversational agent profiles.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fragments",
          "description": "Shared @include blocks.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "variableTypes",
          "description": "Optional variable type hints that override types inferred from template usage.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "overwrite",
          "description": "Update existing profiles and fragments instead of failing ALREADY\\_EXISTS. An existing profile takes the imported prompt, variable specs, name, when\\_to\\_use, keywords and the generation settings the template sets; its model, MCP servers, description and enabled state are kept.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "emitFragments",
          "description": "When false, the default, resolve source includes inline into each profile’s system prompt without writing shared fragment rows. When true, emit supplied shared blocks as prompt fragments and reference them through template actions; every referenced shared block must be supplied.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_ImportAgentProfilesResponse",
      "title": "ImportAgentProfilesResponse",
      "slug": "/api/models/schema-plfvn8rdkq",
      "description": "Result payload for converting and importing source prompt templates into project agent profiles.",
      "semantics": "Result payload for converting and importing source prompt templates into project agent profiles.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ImportAgentProfilesResponse",
        "slug": "/api/models/schema-plfvn8rdkq"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:importAgentProfiles",
          "slug": "/api/agent-profiles/import-agent-profiles",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:importAgentProfiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profiles",
          "description": "Converted + stored (echo).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fragments",
          "description": "Reusable prompt fragments returned by the operation.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfilesRequest",
      "title": "ListAgentProfilesRequest",
      "slug": "/api/models/schema-ov2vhg0rv5",
      "description": "Inputs for paging through agent profiles available in the project library.",
      "semantics": "Inputs for paging through agent profiles available in the project library.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListAgentProfilesRequest",
        "slug": "/api/models/schema-ov2vhg0rv5"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:listAgentProfiles",
          "slug": "/api/agent-profiles/list-agent-profiles",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:listAgentProfiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number used by this listing operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeDisabled",
          "description": "Include disabled profiles in addition to the enabled selection; otherwise only enabled profiles are returned.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfilesResponse",
      "title": "ListAgentProfilesResponse",
      "slug": "/api/models/schema-plhs5r281j",
      "description": "Result payload for paging through agent profiles available in the project library.",
      "semantics": "Result payload for paging through agent profiles available in the project library.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListAgentProfilesResponse",
        "slug": "/api/models/schema-plhs5r281j"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:listAgentProfiles",
          "slug": "/api/agent-profiles/list-agent-profiles",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:listAgentProfiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profiles",
          "description": "Agent profiles returned by the listing or import.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Total number of matching entries reported by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hasMore",
          "description": "Whether the listing reports additional entries beyond this page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfileVersionsRequest",
      "title": "ListAgentProfileVersionsRequest",
      "slug": "/api/models/schema-ouuodfe7pb",
      "description": "Inputs for listing immutable revisions of an agent profile.",
      "semantics": "Inputs for listing immutable revisions of an agent profile.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListAgentProfileVersionsRequest",
        "slug": "/api/models/schema-ouuodfe7pb"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:listAgentProfileVersions",
          "slug": "/api/agent-profiles/list-agent-profile-versions",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:listAgentProfileVersions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfileVersionsResponse",
      "title": "ListAgentProfileVersionsResponse",
      "slug": "/api/models/schema-ov0ccke8ep",
      "description": "Result payload for listing immutable revisions of an agent profile.",
      "semantics": "Result payload for listing immutable revisions of an agent profile.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListAgentProfileVersionsResponse",
        "slug": "/api/models/schema-ov0ccke8ep"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:listAgentProfileVersions",
          "slug": "/api/agent-profiles/list-agent-profile-versions",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:listAgentProfileVersions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "versions",
          "description": "Descending (newest first). Empty when the profile has never existed.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_ListPromptFragmentsRequest",
      "title": "ListPromptFragmentsRequest",
      "slug": "/api/models/schema-ov4kqaetup",
      "description": "Inputs for paging through reusable prompt fragments in the project library.",
      "semantics": "Inputs for paging through reusable prompt fragments in the project library.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListPromptFragmentsRequest",
        "slug": "/api/models/schema-ov4kqaetup"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:listPromptFragments",
          "slug": "/api/agent-profiles/list-prompt-fragments",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:listPromptFragments"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number used by this listing operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_ListPromptFragmentsResponse",
      "title": "ListPromptFragmentsResponse",
      "slug": "/api/models/schema-ov64djvqmi",
      "description": "Result payload for paging through reusable prompt fragments in the project library.",
      "semantics": "Result payload for paging through reusable prompt fragments in the project library.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListPromptFragmentsResponse",
        "slug": "/api/models/schema-ov64djvqmi"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:listPromptFragments",
          "slug": "/api/agent-profiles/list-prompt-fragments",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:listPromptFragments"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fragments",
          "description": "Reusable prompt fragments returned by the operation.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Total number of matching entries reported by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hasMore",
          "description": "Whether the listing reports additional entries beyond this page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "setVersion",
          "description": "Current version of the project’s prompt-fragment set. Zero means no fragments have been written.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_UpdateAgentProfileRequest",
      "title": "UpdateAgentProfileRequest",
      "slug": "/api/models/schema-pljk5a0v40",
      "description": "Inputs for changing selected agent-profile fields and producing an updated revision.",
      "semantics": "Inputs for changing selected agent-profile fields and producing an updated revision.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateAgentProfileRequest",
        "slug": "/api/models/schema-pljk5a0v40"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:updateAgentProfile",
          "slug": "/api/agent-profiles/update-agent-profile",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:updateAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "profile",
          "description": "Carries the new field values.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updateMask",
          "description": "Field paths selecting which values to modify. Omitted or empty: only the fields the profile sets change, at every depth.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_UpdateAgentProfileResponse",
      "title": "UpdateAgentProfileResponse",
      "slug": "/api/models/schema-pllvgssf3c",
      "description": "Result payload for changing selected agent-profile fields and producing an updated revision.",
      "semantics": "Result payload for changing selected agent-profile fields and producing an updated revision.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateAgentProfileResponse",
        "slug": "/api/models/schema-pllvgssf3c"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:updateAgentProfile",
          "slug": "/api/agent-profiles/update-agent-profile",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:updateAgentProfile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profile",
          "description": "Agent profile returned by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_UpdatePromptFragmentRequest",
      "title": "UpdatePromptFragmentRequest",
      "slug": "/api/models/schema-ov8v1n26ad",
      "description": "Inputs for changing selected fields of a reusable prompt fragment.",
      "semantics": "Inputs for changing selected fields of a reusable prompt fragment.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdatePromptFragmentRequest",
        "slug": "/api/models/schema-ov8v1n26ad"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:updatePromptFragment",
          "slug": "/api/agent-profiles/update-prompt-fragment",
          "direction": "request"
        }
      ],
      "usedBy": [
        "agent-profiles:updatePromptFragment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fragmentId",
          "description": "Identifier of the reusable prompt fragment.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "fragment",
          "description": "Carries the new field values.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updateMask",
          "description": "Field paths selecting which values to modify.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_agent_profile_v1_UpdatePromptFragmentResponse",
      "title": "UpdatePromptFragmentResponse",
      "slug": "/api/models/schema-ovambhir9v",
      "description": "Result payload for changing selected fields of a reusable prompt fragment.",
      "semantics": "Result payload for changing selected fields of a reusable prompt fragment.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdatePromptFragmentResponse",
        "slug": "/api/models/schema-ovambhir9v"
      },
      "operationOwners": [
        {
          "key": "agent-profiles:updatePromptFragment",
          "slug": "/api/agent-profiles/update-prompt-fragment",
          "direction": "response"
        }
      ],
      "usedBy": [
        "agent-profiles:updatePromptFragment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fragment",
          "description": "Reusable prompt fragment returned by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_AnnotationQueue",
      "title": "AnnotationQueue",
      "slug": "/api/models/schema-1j9496mkdg",
      "description": "Named work queue assigning score configurations to human annotation items.",
      "semantics": "Named work queue assigning score configurations to human annotation items.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "AnnotationQueue",
        "slug": "/api/models/schema-1j9496mkdg"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:listAnnotationQueues"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "queueId",
          "description": "Identifier of the annotation queue.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Display name of the annotation work queue.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scoreConfigIds",
          "description": "Score configurations available when annotating items in this queue. At least one configuration is required.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pendingCount",
          "description": "Number of queue items awaiting annotation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completedCount",
          "description": "Number of queue items reported completed.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_AnnotationQueueItem",
      "title": "AnnotationQueueItem",
      "slug": "/api/models/schema-ovc35nr9td",
      "description": "Evaluation object assigned to an annotation queue with completion state and attribution.",
      "semantics": "Evaluation object assigned to an annotation queue with completion state and attribution.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "AnnotationQueueItem",
        "slug": "/api/models/schema-ovc35nr9td"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:completeAnnotationQueueItem",
        "evals:listAnnotationQueueItems"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "itemId",
          "description": "Identifier of the annotation queue item.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "queueId",
          "description": "Identifier of the annotation queue.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "objectId",
          "description": "Identifier of the evaluation object addressed by the annotation queue item.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "objectType",
          "description": "Kind of evaluation object addressed by the annotation queue item.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Completion state of the annotation queue item.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completedAt",
          "description": "Time when the operation was marked complete.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completedBy",
          "description": "Identifier of the user who completed the annotation queue item.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_Comment",
      "title": "Comment",
      "slug": "/api/models/schema-ove4pre5lb",
      "description": "Authored text attached to a trace, observation, or other evaluation object.",
      "semantics": "Authored text attached to a trace, observation, or other evaluation object.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Comment",
        "slug": "/api/models/schema-ove4pre5lb"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:listComments"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "commentId",
          "description": "Identifier of the evaluation comment.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "objectType",
          "description": "Kind of evaluation object addressed by the comment.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "objectId",
          "description": "Identifier of the evaluation object addressed by the comment.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Text content of the evaluation comment.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authorUserId",
          "description": "Identifier recorded for the user who authored the comment. A stored author identifier alone does not attest to verified human provenance.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_CursorPageInfo",
      "title": "CursorPageInfo",
      "slug": "/api/models/schema-oi1c4l4i8b",
      "description": "Opaque-cursor pagination details. A cursor is used to request the next page; arbitrary page-number seeking is not supported.",
      "semantics": "Opaque-cursor pagination details. A cursor is used to request the next page; arbitrary page-number seeking is not supported.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "CursorPageInfo",
        "slug": "/api/models/schema-oi1c4l4i8b"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:listDatasetRuns",
        "evals:listObservations",
        "evals:listScores",
        "evals:listSessions",
        "evals:listTraces"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "nextCursor",
          "description": "Pass back as the request's `cursor` for the next page. Empty on the last page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "limit",
          "description": "Maximum number of entries requested from the listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalItems",
          "description": "Total number of matching items when it can be counted exactly. Absent when the selected filters do not support an exact total.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_Dataset",
      "title": "Dataset",
      "slug": "/api/models/schema-1ja63aqvqo",
      "description": "Evaluation dataset metadata, item counts, run history, and input/output schemas.",
      "semantics": "Evaluation dataset metadata, item counts, run history, and input/output schemas.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Dataset",
        "slug": "/api/models/schema-1ja63aqvqo"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:listDatasets"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "datasetId",
          "description": "Identifier of the evaluation dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name identifying the evaluation dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional attributes serialized as a JSON object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "itemCount",
          "description": "Number of dataset items reported for the dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "runCount",
          "description": "Number of runs reported for the evaluation dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastRunAt",
          "description": "Time when the dataset was most recently evaluated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "inputSchemaJson",
          "description": "JSON Schema describing dataset input values.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "expectedOutputSchemaJson",
          "description": "JSON Schema describing expected dataset output values.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_DatasetItem",
      "title": "DatasetItem",
      "slug": "/api/models/schema-1jcdgbb5sm",
      "description": "One evaluation input with its expected output and source trace references.",
      "semantics": "One evaluation input with its expected output and source trace references.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "DatasetItem",
        "slug": "/api/models/schema-1jcdgbb5sm"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:listDatasetItems"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "itemId",
          "description": "Identifier of the evaluation dataset item.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "datasetId",
          "description": "Identifier of the evaluation dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "datasetName",
          "description": "Name of the evaluation dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "inputJson",
          "description": "Evaluation input serialized as JSON.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "expectedOutputJson",
          "description": "Expected output serialized as JSON. Empty until a curator supplies an expected result.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional attributes serialized as a JSON object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceTraceId",
          "description": "Identifier of the trace from which the dataset item originated.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceObservationId",
          "description": "Identifier of the observation from which the dataset item originated.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "State controlling whether the dataset item participates in evaluation.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_DatasetRun",
      "title": "DatasetRun",
      "slug": "/api/models/schema-1jehhpchdc",
      "description": "Metadata describing one execution of an evaluation dataset.",
      "semantics": "Metadata describing one execution of an evaluation dataset.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "DatasetRun",
        "slug": "/api/models/schema-1jehhpchdc"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getDatasetRun",
        "evals:listDatasetRuns"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "runId",
          "description": "Identifier of the evaluation dataset run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "datasetId",
          "description": "Identifier of the evaluation dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name assigned to this execution of the evaluation dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional attributes serialized as a JSON object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "itemCount",
          "description": "Number of dataset items reported for this run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_DatasetRunItem",
      "title": "DatasetRunItem",
      "slug": "/api/models/schema-qbff0c5l2f",
      "description": "One item of a dataset run links the dataset item that was executed to the trace it produced. Keeping this pairing lets you compare the same dataset item across runs.",
      "semantics": "One item of a dataset run links the dataset item that was executed to the trace it produced. Keeping this pairing lets you compare the same dataset item across runs.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "DatasetRunItem",
        "slug": "/api/models/schema-qbff0c5l2f"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6vk7rqoi5v"
      ],
      "fields": [
        {
          "name": "datasetItemId",
          "description": "Identifier of the dataset item used by this evaluation run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "traceId",
          "description": "Identifier of the evaluation trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "observationId",
          "description": "Optional: pin the run to one observation inside the trace rather than the whole turn, for a harness that scores a single generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_DatasetRunItemInput",
      "title": "DatasetRunItem",
      "slug": "/api/models/schema-qbff0c5l2f-input",
      "description": "One item of a dataset run links the dataset item that was executed to the trace it produced. Keeping this pairing lets you compare the same dataset item across runs.",
      "semantics": "One item of a dataset run links the dataset item that was executed to the trace it produced. Keeping this pairing lets you compare the same dataset item across runs.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "DatasetRunItem",
        "slug": "/api/models/schema-qbff0c5l2f"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/6vk7rqoi5v"
      ],
      "fields": [
        {
          "name": "datasetItemId",
          "description": "Identifier of the dataset item used by this evaluation run.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "traceId",
          "description": "Identifier of the evaluation trace.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "observationId",
          "description": "Optional: pin the run to one observation inside the trace rather than the whole turn, for a harness that scores a single generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_EvalCommentSuppressionState",
      "title": "EvalCommentSuppressionState",
      "slug": "/api/models/schema-qbs1n8ja02",
      "description": "State identifying suppressed evaluation comments. Suppressed comment identifiers are filtered out of every ListComments response.\n\nSuppression does not delete the underlying comment from the evaluation provider. A platform operator may still see that comment there.",
      "semantics": "State identifying suppressed evaluation comments. Suppressed comment identifiers are filtered out of every ListComments response.\n\nSuppression does not delete the underlying comment from the evaluation provider. A platform operator may still see that comment there.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "EvalCommentSuppressionState",
        "slug": "/api/models/schema-qbs1n8ja02"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/e0ru3nm27c"
      ],
      "fields": [
        {
          "name": "commentIds",
          "description": "Identifiers of evaluation comments selected for suppression.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_EvalCommentSuppressionStateInput",
      "title": "EvalCommentSuppressionState",
      "slug": "/api/models/schema-qbs1n8ja02-input",
      "description": "State identifying suppressed evaluation comments. Suppressed comment identifiers are filtered out of every ListComments response.\n\nSuppression does not delete the underlying comment from the evaluation provider. A platform operator may still see that comment there.",
      "semantics": "State identifying suppressed evaluation comments. Suppressed comment identifiers are filtered out of every ListComments response.\n\nSuppression does not delete the underlying comment from the evaluation provider. A platform operator may still see that comment there.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "EvalCommentSuppressionState",
        "slug": "/api/models/schema-qbs1n8ja02"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/e0ru3nm27c"
      ],
      "fields": [
        {
          "name": "commentIds",
          "description": "Identifiers of evaluation comments selected for suppression.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_EvalFilter",
      "title": "EvalFilter",
      "slug": "/api/models/schema-ovg7lvels1",
      "description": "Typed comparison operand and column selector for querying evaluation-provider records.\n\nThe filter type selects which single value field is meaningful.\n\n### Input constraints\n\n### type\n\nSelect a listed comparison type.",
      "semantics": "Typed comparison operand and column selector for querying evaluation-provider records.\n\nThe filter type selects which single value field is meaningful.\n\n### Input constraints\n\n### type\n\nSelect a listed comparison type.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "EvalFilter",
        "slug": "/api/models/schema-ovg7lvels1"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:listObservations",
        "evals:listScores",
        "evals:listSessions",
        "evals:listTraces"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "type",
          "description": "Discriminator selecting the evaluation filter’s operand type.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "column",
          "description": "Evaluation filter column identifier, for example traceName, scores\\_avg, metadata or level.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "operator",
          "description": "Operator accepted for the selected filter type, for example contains, any of or >=.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "key",
          "description": "Set only for the \\*\\_OBJECT types: the metadata key or score name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stringValue",
          "description": "Text operand used by a text-valued evaluation filter.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "numberValue",
          "description": "Numeric operand used by the evaluation filter.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "booleanValue",
          "description": "Boolean operand used by the selected evaluation filter type.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stringValues",
          "description": "Text values used by the \\*\\_OPTIONS comparison types.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timeValue",
          "description": "Timestamp operand used by the evaluation filter.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_EvalOverview",
      "title": "EvalOverview",
      "slug": "/api/models/schema-1js2bf073d",
      "description": "Aggregated trace, score, latency, and profile metrics for an evaluation window.",
      "semantics": "Aggregated trace, score, latency, and profile metrics for an evaluation window.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "EvalOverview",
        "slug": "/api/models/schema-1js2bf073d"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getOverview"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "totalTraces",
          "description": "Total trace count reported for the selected evaluation window.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tracesByName",
          "description": "Trace counts grouped by trace name.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tracesOverTime",
          "description": "Trace counts grouped into time buckets.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "observationsByLevel",
          "description": "Observation counts grouped by reported log level.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scores",
          "description": "Score aggregates grouped separately by metric name and source.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scoreMovingAverage",
          "description": "Moving-average score series returned for the selected window.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scoredTraceRatio",
          "description": "Coverage card: share of traces carrying any score, and the annotated count.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "annotatedTraceCount",
          "description": "Number of traces reported to have annotations in the selected window.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "byProfile",
          "description": "Evaluation metrics grouped by agent profile.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "latencyPercentiles",
          "description": "Latency percentile summaries grouped by trace name.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "recentLowScores",
          "description": "Recent scores selected by the overview’s low-score query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_LatencyPercentileRow",
      "title": "LatencyPercentileRow",
      "slug": "/api/models/schema-1jgrpr157a",
      "description": "Latency percentiles, in seconds, aggregated for one evaluation trace name.",
      "semantics": "Latency percentiles, in seconds, aggregated for one evaluation trace name.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "LatencyPercentileRow",
        "slug": "/api/models/schema-1jgrpr157a"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getOverview"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "traceName",
          "description": "Display name used to group or identify the evaluation trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "p50",
          "description": "50th-percentile latency for the trace group, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "p90",
          "description": "90th-percentile latency for the trace group, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "p95",
          "description": "95th-percentile latency for the trace group, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "p99",
          "description": "99th-percentile latency for the trace group, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_NamedCount",
      "title": "NamedCount",
      "slug": "/api/models/schema-1jiel5uim6",
      "description": "Count of evaluation records grouped under a shared label.",
      "semantics": "Count of evaluation records grouped under a shared label.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "NamedCount",
        "slug": "/api/models/schema-1jiel5uim6"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getOverview"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Grouping label associated with this record count.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "count",
          "description": "Number of evaluation records represented by this group.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_Observation",
      "title": "Observation",
      "slug": "/api/models/schema-1ju9tclufp",
      "description": "Timed evaluation span or generation record with model usage, inputs, outputs, and scores. A generation observation originates the profile and configuration attribution promoted to its trace; callers can read those links directly on either record.",
      "semantics": "Timed evaluation span or generation record with model usage, inputs, outputs, and scores. A generation observation originates the profile and configuration attribution promoted to its trace; callers can read those links directly on either record.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Observation",
        "slug": "/api/models/schema-1ju9tclufp"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getTrace",
        "evals:listObservations"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "observationId",
          "description": "Identifier of the evaluation observation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "traceId",
          "description": "Identifier of the evaluation trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "parentObservationId",
          "description": "Identifier of the parent observation within the trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "type",
          "description": "Observation kind reported by the evaluation provider.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Operation name recorded for the evaluation observation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "level",
          "description": "Observation log level reported by the evaluation provider.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "statusMessage",
          "description": "Diagnostic text explaining the reported state.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startTime",
          "description": "Beginning of the time interval represented by this operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endTime",
          "description": "End of the time interval represented by this operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completionStartTime",
          "description": "Time to first token, generations only.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "latencySeconds",
          "description": "Elapsed observation latency, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "inputJson",
          "description": "Evaluation input serialized as JSON.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "outputJson",
          "description": "Evaluation output serialized as JSON.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional attributes serialized as a JSON object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "model",
          "description": "Model identifier recorded for the evaluated generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modelParametersJson",
          "description": "Model parameters recorded as a serialized JSON object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "inputTokens",
          "description": "Input-token usage reported for the evaluated generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "outputTokens",
          "description": "Output-token usage reported for the evaluated generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalTokens",
          "description": "Total token usage reported for the evaluated generation or aggregate.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "inputCost",
          "description": "Cost attributed to model input by the evaluation provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "outputCost",
          "description": "Cost attributed to model output by the evaluation provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCost",
          "description": "Total cost reported for the evaluated generation or aggregate.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "environment",
          "description": "Environment label attached to the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Version of the resource represented by this message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promptName",
          "description": "Name of the versioned prompt associated with the generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promptVersion",
          "description": "Version of the prompt associated with the generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scores",
          "description": "Evaluation scores returned for the selected objects or query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "commentCount",
          "description": "Number of comments reported on the evaluation object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationId",
          "description": "Identifier of the conversation associated with this evaluation observation, when recorded.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceUserMessageId",
          "description": "Identifier of the user message that opened the evaluated generation turn.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "configHash",
          "description": "Fingerprint of the profile ID, model and resolved prompt hash used to group evaluation results. Other settings are excluded; this is not an immutable profile revision.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_PageInfo",
      "title": "EvaluationPageInfo",
      "slug": "/api/models/schema-oi3nhojaso",
      "description": "One-based offset-pagination position, page size and result totals.",
      "semantics": "One-based offset-pagination position, page size and result totals.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "EvaluationPageInfo",
        "slug": "/api/models/schema-oi3nhojaso"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:listAnnotationQueueItems",
        "evals:listAnnotationQueues",
        "evals:listComments",
        "evals:listDatasetItems",
        "evals:listDatasets",
        "evals:listScoreConfigs"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "page",
          "description": "One-based page number.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "limit",
          "description": "Maximum number of entries requested from the listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalItems",
          "description": "Total item count reported for the current query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalPages",
          "description": "Total number of pages reported for the current query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_ProfileQualityRow",
      "title": "ProfileQualityRow",
      "slug": "/api/models/schema-1jku9efe5c",
      "description": "Aggregated evaluation results and usage for one agent profile.",
      "semantics": "Aggregated evaluation results and usage for one agent profile.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ProfileQualityRow",
        "slug": "/api/models/schema-1jku9efe5c"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getOverview"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "traceCount",
          "description": "Number of traces represented by this summary or group.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "avgEndUserRating",
          "description": "Average end-user rating reported for the selected generation group.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "avgJudgeScore",
          "description": "Average automated judge score reported for the selected generation group.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "thumbsDownCount",
          "description": "Number of negative thumb ratings reported for the selected group.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_Score",
      "title": "Score",
      "slug": "/api/models/schema-1jm5lo00e7",
      "description": "Evaluation score with its value, source, target identity, and generation attribution.",
      "semantics": "Evaluation score with its value, source, target identity, and generation attribution.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Score",
        "slug": "/api/models/schema-1jm5lo00e7"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getOverview",
        "evals:getSession",
        "evals:getTrace",
        "evals:listObservations",
        "evals:listScores",
        "evals:listSessions",
        "evals:listTraces"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scoreId",
          "description": "Identifier of the evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "targetType",
          "description": "Kind of evaluation object to which the score applies.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "targetId",
          "description": "Identifier of the evaluation object to which the score applies.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Metric name identifying the recorded evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dataType",
          "description": "Value type used to interpret numeric, categorical, Boolean, or text score values.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "numericValue",
          "description": "Numeric score value reported by the evaluator.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stringValue",
          "description": "Category label recorded for a categorical evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "booleanValue",
          "description": "Boolean value recorded for a Boolean evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "source",
          "description": "Source classification reported for the evaluation score.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "comment",
          "description": "Explanatory text attached to the evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "textValue",
          "description": "Text value of the evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authorUserId",
          "description": "Identifier recorded for the user who authored the score. A stored author identifier alone does not attest to verified human provenance.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "configId",
          "description": "Identifier of the score configuration defining the score’s value domain.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "queueId",
          "description": "Identifier of the annotation queue.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "traceId",
          "description": "Identifier of the evaluation trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "observationId",
          "description": "Identifier of the evaluation observation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Identifier of the evaluation session grouping related traces.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "datasetRunId",
          "description": "Identifier of the dataset run associated with the score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "environment",
          "description": "Environment label attached to the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional attributes serialized as a JSON object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timestamp",
          "description": "Timestamp associated with the evaluation score.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "traceName",
          "description": "Trace name included with the score for display in score listings.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userId",
          "description": "User identifier recorded with the evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceLabel",
          "description": "Original evaluation-provider source label, such as API, ANNOTATION or EVAL. Interpret it alongside source and authorship: API alone does not distinguish an end-user rating from a harness, and a source label does not independently prove verified human provenance.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationId",
          "description": "Conversation identifier recorded in the score’s own metadata. Scores authored directly in the evaluation store can lack platform attribution; an empty link is not repaired by retrying.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messageId",
          "description": "Identifier of the conversation message associated with the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messageSequence",
          "description": "Sequence number of the evaluated message within its conversation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "configHash",
          "description": "Fingerprint of the profile ID, model and resolved prompt hash used to group evaluation results. Other settings are excluded; this is not an immutable profile revision.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_ScoreAggregate",
      "title": "ScoreAggregate",
      "slug": "/api/models/schema-1jo37n9pqa",
      "description": "Count and average for scores grouped by name and source.",
      "semantics": "Count and average for scores grouped by name and source.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ScoreAggregate",
        "slug": "/api/models/schema-1jo37n9pqa"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getOverview"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Metric name shared by the aggregated scores.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "source",
          "description": "Source classification reported for the evaluation score.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "count",
          "description": "Number of evaluation records represented by this group.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "average",
          "description": "Average score value reported for the aggregate.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_ScoreConfig",
      "title": "ScoreConfig",
      "slug": "/api/models/schema-1k2h0fdd77",
      "description": "Score definition specifying its value type, bounds, and allowed categories.",
      "semantics": "Score definition specifying its value type, bounds, and allowed categories.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ScoreConfig",
        "slug": "/api/models/schema-1k2h0fdd77"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:listScoreConfigs",
        "evals:updateScoreConfig"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "configId",
          "description": "Identifier of the score configuration defining the score’s value domain.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name identifying the score definition.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dataType",
          "description": "Value type used to interpret numeric, categorical, Boolean, or text score values.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "minValue",
          "description": "Minimum numeric score value allowed by the score configuration.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxValue",
          "description": "Maximum numeric score value allowed by the score configuration.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "categories",
          "description": "Named score categories defined by the score configuration.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isArchived",
          "description": "Whether the score configuration is archived. Archived configurations are retained so historical scores remain interpretable.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_ScoreConfigCategory",
      "title": "ScoreConfigCategory",
      "slug": "/api/models/schema-1k0g6fhhqd",
      "description": "Named category and associated numeric value in a categorical score definition.",
      "semantics": "Named category and associated numeric value in a categorical score definition.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ScoreConfigCategory",
        "slug": "/api/models/schema-1k0g6fhhqd"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:listScoreConfigs",
        "evals:updateScoreConfig"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "label",
          "description": "Label identifying this score category.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "value",
          "description": "Numeric score value associated with this named category.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_SessionDetail",
      "title": "SessionDetail",
      "slug": "/api/models/schema-ph83s78vr5",
      "description": "Evaluation session summary together with the traces belonging to the session.",
      "semantics": "Evaluation session summary together with the traces belonging to the session.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SessionDetail",
        "slug": "/api/models/schema-ph83s78vr5"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getSession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "summary",
          "description": "Summary information for the evaluation session.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "traces",
          "description": "Evaluation traces returned by the query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_SessionSummary",
      "title": "SessionSummary",
      "slug": "/api/models/schema-pbibjr8tih",
      "description": "Aggregated trace, usage, and score information for an evaluation session.",
      "semantics": "Aggregated trace, usage, and score information for an evaluation session.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SessionSummary",
        "slug": "/api/models/schema-pbibjr8tih"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getSession",
        "evals:listSessions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "sessionId",
          "description": "Identifier of the evaluation session grouping related traces.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "durationSeconds",
          "description": "Elapsed session duration, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "environment",
          "description": "Environment label attached to the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userIds",
          "description": "User identifiers recorded for this evaluation session.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "traceCount",
          "description": "Number of traces represented by this session summary.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCost",
          "description": "Total cost reported for the evaluated generation or aggregate.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "inputTokens",
          "description": "Input-token usage reported for the evaluated generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "outputTokens",
          "description": "Output-token usage reported for the evaluated generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalTokens",
          "description": "Total token usage reported for the evaluated generation or aggregate.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "traceTags",
          "description": "Labels collected from the session’s evaluation traces.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scores",
          "description": "Evaluation scores returned for the selected objects or query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "commentCount",
          "description": "Number of comments reported on the evaluation object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional attributes serialized as a JSON object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "bookmarked",
          "description": "Whether the evaluation object is bookmarked.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationIds",
          "description": "Conversation identifiers observed on the session’s traces; a session may span multiple conversations.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_TimeSeriesPoint",
      "title": "TimeSeriesPoint",
      "slug": "/api/models/schema-1jq6h5scn9",
      "description": "Numeric evaluation measurement associated with a time bucket and series.",
      "semantics": "Numeric evaluation measurement associated with a time bucket and series.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TimeSeriesPoint",
        "slug": "/api/models/schema-1jq6h5scn9"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getOverview"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "bucket",
          "description": "Time bucket identifying this point in the evaluation series.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "value",
          "description": "Numeric measurement recorded for this time bucket and series.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "series",
          "description": "Series key when the query is split — a score name, level, or profile id.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_TraceDetail",
      "title": "TraceDetail",
      "slug": "/api/models/schema-pha7gtif3l",
      "description": "Evaluation trace summary together with its observations and attached scores.",
      "semantics": "Evaluation trace summary together with its observations and attached scores.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TraceDetail",
        "slug": "/api/models/schema-pha7gtif3l"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getTrace"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "summary",
          "description": "Summary information for the evaluation trace.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "observations",
          "description": "Observations associated with the evaluation trace.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scores",
          "description": "Evaluation scores returned for the selected objects or query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_eval_v1_TraceSummary",
      "title": "TraceSummary",
      "slug": "/api/models/schema-1k4mjul65u",
      "description": "Evaluation summary for a conversation turn, including its recorded conversation, message and profile attribution.",
      "semantics": "Evaluation summary for a conversation turn, including its recorded conversation, message and profile attribution.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TraceSummary",
        "slug": "/api/models/schema-1k4mjul65u"
      },
      "operationOwners": [],
      "usedBy": [
        "evals:getSession",
        "evals:getTrace",
        "evals:listTraces"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "traceId",
          "description": "Identifier of the evaluation trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name recorded for the evaluation trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timestamp",
          "description": "Timestamp associated with the evaluation trace.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "inputJson",
          "description": "Evaluation input serialized as JSON.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "outputJson",
          "description": "Evaluation output serialized as JSON.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "latencySeconds",
          "description": "Elapsed observation latency, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCost",
          "description": "Total cost reported for the evaluated generation or aggregate.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "environment",
          "description": "Environment label attached to the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Labels associated with the resource for organization or filtering.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional attributes serialized as a JSON object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "bookmarked",
          "description": "Whether the evaluation object is bookmarked.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Version of the resource represented by this message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "release",
          "description": "Application release identifier attached to the trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userId",
          "description": "Identifier of the user associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Identifier of the evaluation session grouping related traces.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "observationCount",
          "description": "Number of observations reported for the evaluation object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationId",
          "description": "Identifier of the conversation associated with the trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceUserMessageId",
          "description": "Identifier of the user message that opened the evaluated generation turn.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "configHash",
          "description": "Fingerprint of the profile ID, model and resolved prompt hash used to group evaluation results. Other settings are excluded; this is not an immutable profile revision.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "inputTokens",
          "description": "Input-token usage reported for the evaluated generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "outputTokens",
          "description": "Output-token usage reported for the evaluated generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalTokens",
          "description": "Total token usage reported for the evaluated generation or aggregate.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "errorCount",
          "description": "Number of observations reported at error level.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "warningCount",
          "description": "Number of observations reported at warning level.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "defaultCount",
          "description": "Number of observations reported at the default level.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "debugCount",
          "description": "Number of observations reported at debug level.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scores",
          "description": "Evaluation scores returned for the selected objects or query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "commentCount",
          "description": "Number of comments reported on the evaluation object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_AppendMessageRequest",
      "title": "AppendMessageRequest",
      "slug": "/api/models/schema-pm9or0jisa",
      "description": "Input for adding a message to conversation history without starting generation.",
      "semantics": "Input for adding a message to conversation history without starting generation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "AppendMessageRequest",
        "slug": "/api/models/schema-pm9or0jisa"
      },
      "operationOwners": [
        {
          "key": "conversations:appendMessage",
          "slug": "/api/conversations/append-message",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:appendMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "message",
          "description": "Required, for the same reason as SendMessageRequest.user\\_message and via the same hole: this field's name is \"message\", the sends call theirs \"user\\_message\", and the lenient codec discards whichever one the caller did not pick. Appending nothing costs no tokens, but applyAppendMessage returns nil for a nil message and the endpoint answers 200 regardless — so a CONTEXT UPDATE feed writes nothing and the TRIGGER that later reads the thread is missing the context it was told had landed.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_AppendMessageResponse",
      "title": "AppendMessageResponse",
      "slug": "/api/models/schema-oi54oudti5",
      "description": "Result of adding a message to conversation history without starting generation. This message declares no response fields.",
      "semantics": "Result of adding a message to conversation history without starting generation. This message declares no response fields.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "AppendMessageResponse",
        "slug": "/api/models/schema-oi54oudti5"
      },
      "operationOwners": [
        {
          "key": "conversations:appendMessage",
          "slug": "/api/conversations/append-message",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:appendMessage"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_CompactConversationRequest",
      "title": "CompactConversationRequest",
      "slug": "/api/models/schema-oviltgjk0t",
      "description": "Input for compacting the conversation’s model context.",
      "semantics": "Input for compacting the conversation’s model context.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CompactConversationRequest",
        "slug": "/api/models/schema-oviltgjk0t"
      },
      "operationOwners": [
        {
          "key": "conversations:compactConversation",
          "slug": "/api/conversations/compact-conversation",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:compactConversation"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_CompactConversationResponse",
      "title": "CompactConversationResponse",
      "slug": "/api/models/schema-ovk8n7v7ne",
      "description": "Result of compacting the conversation's model context. Token counts describe the selected source span and its replacement summary, not the entire context window. Counts and duration are unavailable while asynchronous compaction is pending.",
      "semantics": "Result of compacting the conversation's model context. Token counts describe the selected source span and its replacement summary, not the entire context window. Counts and duration are unavailable while asynchronous compaction is pending.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CompactConversationResponse",
        "slug": "/api/models/schema-ovk8n7v7ne"
      },
      "operationOwners": [
        {
          "key": "conversations:compactConversation",
          "slug": "/api/conversations/compact-conversation",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:compactConversation"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "compactionId",
          "description": "Identifier assigned to this context compaction.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tokensBefore",
          "description": "Estimated tokens in the source messages being summarized, not the compaction trigger estimate.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tokensAfter",
          "description": "Tokens in the generated summary, using provider-reported usage when available.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tokensSaved",
          "description": "Source count minus summary count. The counts can use different methods; this is not an invoice saving.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "durationMs",
          "description": "Recorded compaction duration in milliseconds; it can be zero. Measure client elapsed time for latency comparisons.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Status reported for this context compaction.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_CreateDailySessionRequest",
      "title": "CreateDailySessionRequest",
      "slug": "/api/models/schema-pjmaup2tgb",
      "description": "Daily session (Pipecat)\n\nInput for starting a Pipecat voice session for the conversation.",
      "semantics": "Daily session (Pipecat)\n\nInput for starting a Pipecat voice session for the conversation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateDailySessionRequest",
        "slug": "/api/models/schema-pjmaup2tgb"
      },
      "operationOwners": [
        {
          "key": "conversations:createDailySession",
          "slug": "/api/conversations/create-daily-session",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "agentName",
          "description": "Name of the Pipecat agent to start for the voice session.\n\nrequired",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "socayoConfig",
          "description": "Socayo-specific agent configuration",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createDailyRoom",
          "description": "Whether session creation should also create a Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dailyRoomProperties",
          "description": "Properties passed to Daily when creating the session room.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dailyMeetingTokenProperties",
          "description": "Properties passed to Daily when issuing the meeting token.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userData",
          "description": "User data passed to the Pipecat agent at session startup.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_CreateDailySessionResponse",
      "title": "CreateDailySessionResponse",
      "slug": "/api/models/schema-phcaqgrmna",
      "description": "Result of starting a Pipecat voice session for the conversation.",
      "semantics": "Result of starting a Pipecat voice session for the conversation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateDailySessionResponse",
        "slug": "/api/models/schema-phcaqgrmna"
      },
      "operationOwners": [
        {
          "key": "conversations:createDailySession",
          "slug": "/api/conversations/create-daily-session",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "session",
          "description": "Daily voice session connection information.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadRequest",
      "title": "CreateThreadRequest",
      "slug": "/api/models/schema-pmbc1t72c6",
      "description": "Thread management\n\nInput for creating a conversation thread with its initial configuration.",
      "semantics": "Thread management\n\nInput for creating a conversation thread with its initial configuration.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateThreadRequest",
        "slug": "/api/models/schema-pmbc1t72c6"
      },
      "operationOwners": [
        {
          "key": "conversations:createThread",
          "slug": "/api/conversations/create-thread",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:createThread"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "title",
          "description": "Display title of the conversation thread.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Labels associated with the conversation thread.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "activeProfileId",
          "description": "Agent profile selected as the conversation’s active profile at creation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "activeProfileVersion",
          "description": "Immutable version of the active profile to use. Zero selects its latest version.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Caller-supplied identifier associated with the conversation thread.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "defaultGenerationConfig",
          "description": "Base model and tool configuration for turns in this conversation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationSettings",
          "description": "Initial conversation settings, including prompt and integration configuration.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "contextManagementSettings",
          "description": "Optional context-management settings for the new conversation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadResponse",
      "title": "CreateThreadResponse",
      "slug": "/api/models/schema-ovmjpjvbj6",
      "description": "Result of creating a conversation thread with its initial configuration.",
      "semantics": "Result of creating a conversation thread with its initial configuration.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateThreadResponse",
        "slug": "/api/models/schema-ovmjpjvbj6"
      },
      "operationOwners": [
        {
          "key": "conversations:createThread",
          "slug": "/api/conversations/create-thread",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:createThread"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "thread",
          "description": "Conversation thread returned by creation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_DeleteMemoryRequest",
      "title": "DeleteMemoryRequest",
      "slug": "/api/models/schema-ovotpbg603",
      "description": "Input for deleting a memory record by its identifier.",
      "semantics": "Input for deleting a memory record by its identifier.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteMemoryRequest",
        "slug": "/api/models/schema-ovotpbg603"
      },
      "operationOwners": [
        {
          "key": "conversations:deleteMemory",
          "slug": "/api/conversations/delete-memory",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:deleteMemory"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "memoryId",
          "description": "Memory ID to delete",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_DeleteMemoryResponse",
      "title": "DeleteMemoryResponse",
      "slug": "/api/models/schema-oi7ds3ubuj",
      "description": "Result of deleting a memory record by its identifier.",
      "semantics": "Result of deleting a memory record by its identifier.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteMemoryResponse",
        "slug": "/api/models/schema-oi7ds3ubuj"
      },
      "operationOwners": [
        {
          "key": "conversations:deleteMemory",
          "slug": "/api/conversations/delete-memory",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:deleteMemory"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "success",
          "description": "Whether deletion was successful",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_DeleteMessageRatingRequest",
      "title": "DeleteMessageRatingRequest",
      "slug": "/api/models/schema-ovqv6a36co",
      "description": "Withdraw the caller's own rating on a message in a thread. As with RateMessage, the rater is derived server-side from the verified request headers; there is deliberately no \"whose rating\" parameter.",
      "semantics": "Withdraw the caller's own rating on a message in a thread. As with RateMessage, the rater is derived server-side from the verified request headers; there is deliberately no \"whose rating\" parameter.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteMessageRatingRequest",
        "slug": "/api/models/schema-ovqv6a36co"
      },
      "operationOwners": [
        {
          "key": "conversations:deleteMessageRating",
          "slug": "/api/conversations/delete-message-rating",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:deleteMessageRating"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "messageSequence",
          "description": "Message whose rating to withdraw (by sequence number)",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_DeleteMessageRatingResponse",
      "title": "DeleteMessageRatingResponse",
      "slug": "/api/models/schema-pmd5ntg1m6",
      "description": "Result of withdrawing the caller’s rating on a conversation message.",
      "semantics": "Result of withdrawing the caller’s rating on a conversation message.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteMessageRatingResponse",
        "slug": "/api/models/schema-pmd5ntg1m6"
      },
      "operationOwners": [
        {
          "key": "conversations:deleteMessageRating",
          "slug": "/api/conversations/delete-message-rating",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:deleteMessageRating"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "ratedMessage",
          "description": "The message with the caller's entry removed from the feedback list",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "removed",
          "description": "False when the caller had no rating on this message — an idempotent success, not an error.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_GetConversationStateRequest",
      "title": "GetConversationStateRequest",
      "slug": "/api/models/schema-ovr4l7173m",
      "description": "Input for reading conversation history and current generation state. Supply exactly one of conversation\\_key or external\\_id; either addresses the same stored conversation.",
      "semantics": "Input for reading conversation history and current generation state. Supply exactly one of conversation\\_key or external\\_id; either addresses the same stored conversation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetConversationStateRequest",
        "slug": "/api/models/schema-ovr4l7173m"
      },
      "operationOwners": [
        {
          "key": "conversations:getConversationState",
          "slug": "/api/conversations/get-conversation-state",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:getConversationState"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Generated conversation thread ID. Leave empty when addressing by external\\_id.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Client-supplied conversation identifier from CreateThread, resolved within the caller’s ownership scope.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_GetConversationStateResponse",
      "title": "GetConversationStateResponse",
      "slug": "/api/models/schema-pmfeo9eqpm",
      "description": "Result of reading conversation history and current generation state.",
      "semantics": "Result of reading conversation history and current generation state.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetConversationStateResponse",
        "slug": "/api/models/schema-pmfeo9eqpm"
      },
      "operationOwners": [
        {
          "key": "conversations:getConversationState",
          "slug": "/api/conversations/get-conversation-state",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:getConversationState"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "messageHistory",
          "description": "Messages recorded in the conversation history.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "defaultGenerationConfig",
          "description": "Base model and tool configuration for turns in this conversation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "settings",
          "description": "Conversation settings returned or supplied for this operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "activeRunId",
          "description": "Run tracked by the conversation. Older threads can retain the last run ID after it ends; inspect active\\_running before interpreting this as a currently active run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "activeRunning",
          "description": "Whether an active run was observed. False may be omitted from JSON; it does not establish that an accepted or queued request completed.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "contextManagementSettings",
          "description": "Configuration governing the conversation’s context management and compaction.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "compactions",
          "description": "Recorded context compaction operations for the conversation.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "compactionInProgress",
          "description": "Whether a context compaction is currently in progress.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalUsage",
          "description": "Cumulative token usage and cost for the conversation. Read from conversation state rather than a delayed list projection. Absent when no usage has accrued.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Echoed back so a caller addressing by conversation\\_key can reconcile its own identifier without a second lookup. Empty when none was supplied.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationKey",
          "description": "System thread id keying the conversation, always populated. Mirror of external\\_id for the other direction: a caller addressing by external\\_id learns the thread id without a second lookup.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastRunStatus",
          "description": "Terminal status of the last generation run that has ended. Unset until a run has ended.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_GetMemoryRequest",
      "title": "GetMemoryRequest",
      "slug": "/api/models/schema-ovtm60gn84",
      "description": "Input for retrieving a memory record by its identifier.",
      "semantics": "Input for retrieving a memory record by its identifier.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetMemoryRequest",
        "slug": "/api/models/schema-ovtm60gn84"
      },
      "operationOwners": [
        {
          "key": "conversations:getMemory",
          "slug": "/api/conversations/get-memory",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:getMemory"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "memoryId",
          "description": "Memory ID to retrieve",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_GetMemoryResponse",
      "title": "GetMemoryResponse",
      "slug": "/api/models/schema-ovva00fuqs",
      "description": "Result of retrieving a memory record by its identifier.",
      "semantics": "Result of retrieving a memory record by its identifier.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetMemoryResponse",
        "slug": "/api/models/schema-ovva00fuqs"
      },
      "operationOwners": [
        {
          "key": "conversations:getMemory",
          "slug": "/api/conversations/get-memory",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:getMemory"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "memory",
          "description": "The requested memory",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_GetToolCallRequest",
      "title": "GetToolCallRequest",
      "slug": "/api/models/schema-p01f0pdtm6",
      "description": "Input for locating a tool call within conversation history.",
      "semantics": "Input for locating a tool call within conversation history.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetToolCallRequest",
        "slug": "/api/models/schema-p01f0pdtm6"
      },
      "operationOwners": [
        {
          "key": "conversations:getToolCall",
          "slug": "/api/conversations/get-tool-call",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:getToolCall"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "toolCallId",
          "description": "Identifier of the tool call to retrieve.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_GetToolCallResponse",
      "title": "GetToolCallResponse",
      "slug": "/api/models/schema-pbkt0qhs39",
      "description": "Result of locating a tool call within conversation history.",
      "semantics": "Result of locating a tool call within conversation history.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetToolCallResponse",
        "slug": "/api/models/schema-pbkt0qhs39"
      },
      "operationOwners": [
        {
          "key": "conversations:getToolCall",
          "slug": "/api/conversations/get-tool-call",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:getToolCall"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "messageSequence",
          "description": "Sequence number of the conversation message containing the tool call.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messageId",
          "description": "Identifier of the conversation message containing the tool call.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolCall",
          "description": "Tool call retrieved from the identified conversation message.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_ListMemoriesRequest",
      "title": "ListMemoriesRequest",
      "slug": "/api/models/schema-p03tfiqkvd",
      "description": "Input for listing memory records in the caller’s scope.",
      "semantics": "Input for listing memory records in the caller’s scope.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListMemoriesRequest",
        "slug": "/api/models/schema-p03tfiqkvd"
      },
      "operationOwners": [
        {
          "key": "conversations:listMemories",
          "slug": "/api/conversations/list-memories",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:listMemories"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "agentId",
          "description": "Filter by agent/conversation ID (optional)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "limit",
          "description": "Maximum number of memories to return. Supply explicitly; omission is rejected.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_ListMemoriesResponse",
      "title": "ListMemoriesResponse",
      "slug": "/api/models/schema-p05e57k903",
      "description": "Result of listing memory records in the caller’s scope.",
      "semantics": "Result of listing memory records in the caller’s scope.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListMemoriesResponse",
        "slug": "/api/models/schema-p05e57k903"
      },
      "operationOwners": [
        {
          "key": "conversations:listMemories",
          "slug": "/api/conversations/list-memories",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:listMemories"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "memories",
          "description": "List of user's memories",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_ListPendingApprovalsRequest",
      "title": "ListPendingApprovalsRequest",
      "slug": "/api/models/schema-p0701phf9n",
      "description": "Input for reading tool calls awaiting approval.",
      "semantics": "Input for reading tool calls awaiting approval.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListPendingApprovalsRequest",
        "slug": "/api/models/schema-p0701phf9n"
      },
      "operationOwners": [
        {
          "key": "conversations:listPendingApprovals",
          "slug": "/api/conversations/list-pending-approvals",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:listPendingApprovals"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_ListPendingApprovalsResponse",
      "title": "ListPendingApprovalsResponse",
      "slug": "/api/models/schema-pbmnb0dufa",
      "description": "Result of reading tool calls awaiting approval.",
      "semantics": "Result of reading tool calls awaiting approval.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListPendingApprovalsResponse",
        "slug": "/api/models/schema-pbmnb0dufa"
      },
      "operationOwners": [
        {
          "key": "conversations:listPendingApprovals",
          "slug": "/api/conversations/list-pending-approvals",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:listPendingApprovals"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "toolCalls",
          "description": "Tool calls waiting for a caller approval decision.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_ListPendingClientToolsRequest",
      "title": "ListPendingClientToolsRequest",
      "slug": "/api/models/schema-p09s8686vq",
      "description": "Input for reading client-side tool calls awaiting execution.",
      "semantics": "Input for reading client-side tool calls awaiting execution.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListPendingClientToolsRequest",
        "slug": "/api/models/schema-p09s8686vq"
      },
      "operationOwners": [
        {
          "key": "conversations:listPendingClientTools",
          "slug": "/api/conversations/list-pending-client-tools",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:listPendingClientTools"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "namePrefixFilters",
          "description": "When supplied, include only pending client tools whose names match one of these prefixes.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_ListPendingClientToolsResponse",
      "title": "ListPendingClientToolsResponse",
      "slug": "/api/models/schema-pboi1kcd3a",
      "description": "Result of reading client-side tool calls awaiting execution.",
      "semantics": "Result of reading client-side tool calls awaiting execution.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListPendingClientToolsResponse",
        "slug": "/api/models/schema-pboi1kcd3a"
      },
      "operationOwners": [
        {
          "key": "conversations:listPendingClientTools",
          "slug": "/api/conversations/list-pending-client-tools",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:listPendingClientTools"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "messageSequences",
          "description": "Inlined fields aligned by index across the three arrays.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messageIds",
          "description": "Message identifiers aligned with the returned tool calls.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolCalls",
          "description": "Client-side tool calls aligned with the returned message identifiers and sequences.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_ListThreadsRequest",
      "title": "ListThreadsRequest",
      "slug": "/api/models/schema-p0bmu14b59",
      "description": "Input for listing conversation threads visible to the caller.",
      "semantics": "Input for listing conversation threads visible to the caller.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListThreadsRequest",
        "slug": "/api/models/schema-p0bmu14b59"
      },
      "operationOwners": [
        {
          "key": "conversations:listThreads",
          "slug": "/api/conversations/list-threads",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:listThreads"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "limit",
          "description": "Maximum rows per page. Zero selects the default of 50. Values greater than 200 are clamped to 200. Negative values are rejected.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageToken",
          "description": "Opaque base64 cursor returned by prior call. Empty for first page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_ListThreadsResponse",
      "title": "ListThreadsResponse",
      "slug": "/api/models/schema-pbq4daj4vb",
      "description": "Result of listing conversation threads visible to the caller.",
      "semantics": "Result of listing conversation threads visible to the caller.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListThreadsResponse",
        "slug": "/api/models/schema-pbq4daj4vb"
      },
      "operationOwners": [
        {
          "key": "conversations:listThreads",
          "slug": "/api/conversations/list-threads",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:listThreads"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "threads",
          "description": "Conversation summaries returned for this page. An absent JSON list means this page is empty.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nextPageToken",
          "description": "Opaque continuation token for requesting the next page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPCallToolRequest",
      "title": "MCPCallToolRequest",
      "slug": "/api/models/schema-pbs9nk884k",
      "description": "Input for executing a tool through an MCP server.",
      "semantics": "Input for executing a tool through an MCP server.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPCallToolRequest",
        "slug": "/api/models/schema-pbs9nk884k"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpCallTool",
          "slug": "/api/conversations/mcp-call-tool",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:mcpCallTool"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "toolCall",
          "description": "Prefer ToolCall with server\\_id/name and arguments\\_json (object)",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requestId",
          "description": "Correlation identifier for the MCP tool execution request.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Optional session routing hint for the MCP operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPCallToolResponse",
      "title": "MCPCallToolResponse",
      "slug": "/api/models/schema-pbuih56pam",
      "description": "Result of executing a tool through an MCP server.",
      "semantics": "Result of executing a tool through an MCP server.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPCallToolResponse",
        "slug": "/api/models/schema-pbuih56pam"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpCallTool",
          "slug": "/api/conversations/mcp-call-tool",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:mcpCallTool"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "requestId",
          "description": "Correlation identifier for the MCP tool execution request.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolCall",
          "description": "Tool call with its arguments, execution state, and available result.\n\nstatus/result\\_json/executed\\_at filled",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "executionTimeMs",
          "description": "Reported duration of MCP tool execution, in milliseconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPGetPromptRequest",
      "title": "MCPGetPromptRequest",
      "slug": "/api/models/schema-p0d34ahkbf",
      "description": "Input for retrieving an MCP prompt template by name.",
      "semantics": "Input for retrieving an MCP prompt template by name.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPGetPromptRequest",
        "slug": "/api/models/schema-p0d34ahkbf"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpGetPrompt",
          "slug": "/api/conversations/mcp-get-prompt",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:mcpGetPrompt"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "serverId",
          "description": "Identifier of the MCP server to query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name of the MCP prompt template to retrieve.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Session routing hint for the MCP operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPGetPromptResponse",
      "title": "MCPGetPromptResponse",
      "slug": "/api/models/schema-pc0gpnecp3",
      "description": "Result of retrieving an MCP prompt template by name.",
      "semantics": "Result of retrieving an MCP prompt template by name.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPGetPromptResponse",
        "slug": "/api/models/schema-pc0gpnecp3"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpGetPrompt",
          "slug": "/api/conversations/mcp-get-prompt",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:mcpGetPrompt"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "prompt",
          "description": "Prompt template returned by the MCP server.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPGetServerInfoRequest",
      "title": "MCPGetServerInfoRequest",
      "slug": "/api/models/schema-p0fa0p1eh1",
      "description": "Input for reading connection and capability information for an MCP server.",
      "semantics": "Input for reading connection and capability information for an MCP server.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPGetServerInfoRequest",
        "slug": "/api/models/schema-p0fa0p1eh1"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpGetServerInfo",
          "slug": "/api/conversations/mcp-get-server-info",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:mcpGetServerInfo"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "serverId",
          "description": "Identifier of the MCP server to query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPGetServerInfoResponse",
      "title": "MCPGetServerInfoResponse",
      "slug": "/api/models/schema-pc20jt884f",
      "description": "Result of reading connection and capability information for an MCP server.",
      "semantics": "Result of reading connection and capability information for an MCP server.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPGetServerInfoResponse",
        "slug": "/api/models/schema-pc20jt884f"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpGetServerInfo",
          "slug": "/api/conversations/mcp-get-server-info",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:mcpGetServerInfo"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "serverInfo",
          "description": "Connection and capability information for the selected MCP server.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPListAvailableServersRequest",
      "title": "MCPListAvailableServersRequest",
      "slug": "/api/models/schema-p0hcdboh2o",
      "description": "Inputs for listing MCP servers available through the gateway.",
      "semantics": "Inputs for listing MCP servers available through the gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPListAvailableServersRequest",
        "slug": "/api/models/schema-p0hcdboh2o"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpListAvailableServers",
          "slug": "/api/conversations/mcp-list-available-servers",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:mcpListAvailableServers"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "includeDisconnected",
          "description": "Whether the server listing should include disconnected MCP servers.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "kinds",
          "description": "Restrict the listing to these ownership classes. Empty selects every class.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPListAvailableServersResponse",
      "title": "MCPListAvailableServersResponse",
      "slug": "/api/models/schema-pc4gisk5op",
      "description": "Result of listing the MCP servers available through the gateway.",
      "semantics": "Result of listing the MCP servers available through the gateway.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPListAvailableServersResponse",
        "slug": "/api/models/schema-pc4gisk5op"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpListAvailableServers",
          "slug": "/api/conversations/mcp-list-available-servers",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:mcpListAvailableServers"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "servers",
          "description": "Connection status of each MCP server included in the listing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPListPromptsRequest",
      "title": "MCPListPromptsRequest",
      "slug": "/api/models/schema-p0jh2qk6ac",
      "description": "Inputs for listing prompts from the selected MCP server.",
      "semantics": "Inputs for listing prompts from the selected MCP server.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPListPromptsRequest",
        "slug": "/api/models/schema-p0jh2qk6ac"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpListPrompts",
          "slug": "/api/conversations/mcp-list-prompts",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:mcpListPrompts"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "serverId",
          "description": "Identifier of the MCP server to query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nameFilter",
          "description": "Filter applied to the names of discovered MCP prompts.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Session routing hint for the MCP operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPListPromptsResponse",
      "title": "MCPListPromptsResponse",
      "slug": "/api/models/schema-pc6742j2bl",
      "description": "Result of discovering prompt templates exposed by an MCP server.",
      "semantics": "Result of discovering prompt templates exposed by an MCP server.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPListPromptsResponse",
        "slug": "/api/models/schema-pc6742j2bl"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpListPrompts",
          "slug": "/api/conversations/mcp-list-prompts",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:mcpListPrompts"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "prompts",
          "description": "Prompt templates returned by MCP discovery.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Number of entries reported by the MCP operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPListResourcesRequest",
      "title": "MCPListResourcesRequest",
      "slug": "/api/models/schema-p0l4rnmeg7",
      "description": "Inputs for listing resources from the selected MCP server.",
      "semantics": "Inputs for listing resources from the selected MCP server.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPListResourcesRequest",
        "slug": "/api/models/schema-p0l4rnmeg7"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpListResources",
          "slug": "/api/conversations/mcp-list-resources",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:mcpListResources"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "serverId",
          "description": "Identifier of the MCP server to query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "uriFilter",
          "description": "Filter applied to the URIs of discovered MCP resources.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Session routing hint for the MCP operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPListResourcesResponse",
      "title": "MCPListResourcesResponse",
      "slug": "/api/models/schema-phec8noal9",
      "description": "Result of discovering resources exposed by an MCP server.",
      "semantics": "Result of discovering resources exposed by an MCP server.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPListResourcesResponse",
        "slug": "/api/models/schema-phec8noal9"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpListResources",
          "slug": "/api/conversations/mcp-list-resources",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:mcpListResources"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "resources",
          "description": "Resource descriptions returned by MCP discovery.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Number of entries reported by the MCP operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPListToolsRequest",
      "title": "MCPListToolsRequest",
      "slug": "/api/models/schema-p0mjmtd38a",
      "description": "Inputs for discovering tools from selected MCP servers.",
      "semantics": "Inputs for discovering tools from selected MCP servers.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPListToolsRequest",
        "slug": "/api/models/schema-p0mjmtd38a"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpListTools",
          "slug": "/api/conversations/mcp-list-tools",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:mcpListTools"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "servers",
          "description": "MCP servers to inspect; an empty list requests tools from all available servers.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Optional session routing hint for the MCP operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPListToolsResponse",
      "title": "MCPListToolsResponse",
      "slug": "/api/models/schema-p0oo3ij6dk",
      "description": "Result of discovering tools exposed by MCP servers.",
      "semantics": "Result of discovering tools exposed by MCP servers.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPListToolsResponse",
        "slug": "/api/models/schema-p0oo3ij6dk"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpListTools",
          "slug": "/api/conversations/mcp-list-tools",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:mcpListTools"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "tools",
          "description": "Tool definitions returned by MCP discovery.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Number of entries reported by the MCP operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPReadResourceRequest",
      "title": "MCPReadResourceRequest",
      "slug": "/api/models/schema-p0qfrmfukb",
      "description": "Input for reading an MCP resource by URI.",
      "semantics": "Input for reading an MCP resource by URI.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPReadResourceRequest",
        "slug": "/api/models/schema-p0qfrmfukb"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpReadResource",
          "slug": "/api/conversations/mcp-read-resource",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:mcpReadResource"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "serverId",
          "description": "Identifier of the MCP server to query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "uri",
          "description": "URI identifying the MCP resource to read.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Session routing hint for the MCP operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MCPReadResourceResponse",
      "title": "MCPReadResourceResponse",
      "slug": "/api/models/schema-phgd8080re",
      "description": "Result of reading an MCP resource by URI.",
      "semantics": "Result of reading an MCP resource by URI.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MCPReadResourceResponse",
        "slug": "/api/models/schema-phgd8080re"
      },
      "operationOwners": [
        {
          "key": "conversations:mcpReadResource",
          "slug": "/api/conversations/mcp-read-resource",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:mcpReadResource"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "resource",
          "description": "MCP resource with content when provided by the server.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MintSttTokenRequest",
      "title": "MintSttTokenRequest",
      "slug": "/api/models/schema-p0somsjpje",
      "description": "Mint a short-lived Cartesia STT access token for the calling user.",
      "semantics": "Mint a short-lived Cartesia STT access token for the calling user.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MintSttTokenRequest",
        "slug": "/api/models/schema-p0somsjpje"
      },
      "operationOwners": [
        {
          "key": "conversations:mintSttToken",
          "slug": "/api/conversations/mint-stt-token",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:mintSttToken"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_MintSttTokenResponse",
      "title": "MintSttTokenResponse",
      "slug": "/api/models/schema-oi9554jq03",
      "description": "Result of issuing a short-lived Cartesia speech-to-text access token.",
      "semantics": "Result of issuing a short-lived Cartesia speech-to-text access token.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MintSttTokenResponse",
        "slug": "/api/models/schema-oi9554jq03"
      },
      "operationOwners": [
        {
          "key": "conversations:mintSttToken",
          "slug": "/api/conversations/mint-stt-token",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:mintSttToken"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "token",
          "description": "Short-lived Cartesia speech-to-text access token.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "expiresInSeconds",
          "description": "Lifetime of the issued access token, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_RateMessageRequest",
      "title": "RateMessageRequest",
      "slug": "/api/models/schema-p0udug1gnb",
      "description": "Rate an assistant message in a thread. The rater is derived server-side from the verified request headers — never supplied by the client body. For THUMB feedback, thumb\\_up supplies the choice and rating must be zero or omitted. For SCALE feedback, rating must be from 1 through 10.",
      "semantics": "Rate an assistant message in a thread. The rater is derived server-side from the verified request headers — never supplied by the client body. For THUMB feedback, thumb\\_up supplies the choice and rating must be zero or omitted. For SCALE feedback, rating must be from 1 through 10.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RateMessageRequest",
        "slug": "/api/models/schema-p0udug1gnb"
      },
      "operationOwners": [
        {
          "key": "conversations:rateMessage",
          "slug": "/api/conversations/rate-message",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:rateMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "messageSequence",
          "description": "Per-conversation sequence number of the assistant-generated message to rate.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "kind",
          "description": "Rating representation used to interpret the thumb or scale value.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "thumbUp",
          "description": "Positive when true and negative when false; used for THUMB feedback.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rating",
          "description": "Numeric quality rating for SCALE feedback; the scale endpoints mean poor and excellent.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "reason",
          "description": "Optional explanation for the rating.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_RateMessageResponse",
      "title": "RateMessageResponse",
      "slug": "/api/models/schema-pmhhecsr3s",
      "description": "Result of recording the caller’s rating on a conversation message.",
      "semantics": "Result of recording the caller’s rating on a conversation message.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RateMessageResponse",
        "slug": "/api/models/schema-pmhhecsr3s"
      },
      "operationOwners": [
        {
          "key": "conversations:rateMessage",
          "slug": "/api/conversations/rate-message",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:rateMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "ratedMessage",
          "description": "The rated message with the full (all-rater) feedback list applied",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isUpdate",
          "description": "True when this replaced the caller's previous rating on this message",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SearchMemoriesRequest",
      "title": "Memory search request",
      "slug": "/api/models/schema-p10596m0ud",
      "description": "Input for a semantic search of memories in the authenticated user’s tenant scope.\n\nCaller identity and scope come from authenticated context; internal identity context is not part of the supported public search request.",
      "semantics": "Input for a semantic search of memories in the authenticated user’s tenant scope.\n\nCaller identity and scope come from authenticated context; internal identity context is not part of the supported public search request.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "Memory search request",
        "slug": "/api/models/schema-p10596m0ud"
      },
      "operationOwners": [
        {
          "key": "conversations:searchMemories",
          "slug": "/api/conversations/search-memories",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:searchMemories"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "query",
          "description": "Non-empty natural-language search query.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "topK",
          "description": "Maximum results requested. Supply explicitly; omission is rejected before search. The maximum is 100 because these search results are returned directly to the caller. Memory selected for a generation turn has a separate maximum of 50.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "threshold",
          "description": "Minimum provider relevance score. Omission and zero do not request a positive cutoff. Scores are provider-specific, not probabilities that the memory is true.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rerank",
          "description": "Requests reranking when supported. Absence leaves the provider behavior unchanged; explicit false is forwarded as false. It does not guarantee relevance or correctness.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SearchMemoriesResponse",
      "title": "Memory search response",
      "slug": "/api/models/schema-p12i3196lo",
      "description": "Relevant memory records and any graph relationships returned by the search provider.",
      "semantics": "Relevant memory records and any graph relationships returned by the search provider.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "Memory search response",
        "slug": "/api/models/schema-p12i3196lo"
      },
      "operationOwners": [
        {
          "key": "conversations:searchMemories",
          "slug": "/api/conversations/search-memories",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:searchMemories"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "memories",
          "description": "Matched memories ordered by relevance. An empty result does not prove that no memories exist.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "relations",
          "description": "Returned graph relationships; this list may be absent when there are no relationships.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest",
      "title": "SendMessageRequest",
      "slug": "/api/models/schema-pmjllatsai",
      "description": "Conversation operations\n\nInput for starting an asynchronous generation from a user message.",
      "semantics": "Conversation operations\n\nInput for starting an asynchronous generation from a user message.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendMessageRequest",
        "slug": "/api/models/schema-pmjllatsai"
      },
      "operationOwners": [
        {
          "key": "conversations:sendMessage",
          "slug": "/api/conversations/send-message",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:sendMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "userMessage",
          "description": "User message that starts the conversation turn. Required; its role is expected to be ROLE\\_USER.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "overrideGenerationConfig",
          "description": "Per-call configuration overrides applied to the active profile’s configuration, or otherwise the conversation default. Supplied scalar values, including zero, empty or false, replace the base value; omitted values inherit. Empty repeated or map values inherit. Use clear\\_tools to clear inherited tools and clear\\_client\\_tools to clear inherited client tools.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "setActiveProfileId",
          "description": "Set the active agent profile for this and subsequent conversation turns.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "setActiveProfileVersion",
          "description": "Version of the active agent profile forwarded with this turn.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "overrideMcpServers",
          "description": "MCP servers for this turn only. A nonempty list replaces the active profile’s or conversation’s list for tool discovery and execution; an empty list inherits the resolved configuration.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "experiment",
          "description": "Dataset-run attribution for a scripted evaluation turn. Leave unset for ordinary conversation traffic. An asynchronous caller must wait for the generation run to finish before scoring its result.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SendMessageResponse",
      "title": "SendMessageResponse",
      "slug": "/api/models/schema-oib4t0rv10",
      "description": "Result of starting an asynchronous generation from a user message.",
      "semantics": "Result of starting an asynchronous generation from a user message.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendMessageResponse",
        "slug": "/api/models/schema-oib4t0rv10"
      },
      "operationOwners": [
        {
          "key": "conversations:sendMessage",
          "slug": "/api/conversations/send-message",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:sendMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "runId",
          "description": "Identifier of the generation run associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "interruptedPriorRun",
          "description": "Whether submitting this turn interrupted a preceding generation run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncRequest",
      "title": "SendMessageSyncRequest",
      "slug": "/api/models/schema-pmlf0tu2vo",
      "description": "Input for submitting a user message and waiting for generation output.",
      "semantics": "Input for submitting a user message and waiting for generation output.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendMessageSyncRequest",
        "slug": "/api/models/schema-pmlf0tu2vo"
      },
      "operationOwners": [
        {
          "key": "conversations:sendMessageSync",
          "slug": "/api/conversations/send-message-sync",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "userMessage",
          "description": "Required — see the note on SendMessageRequest.user\\_message. The sync path is where the defect was actually observed: it holds the connection open, waits out a real generation, and hands back messages and a COMPLETED status, so a dropped turn field looks exactly like a working call.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "overrideGenerationConfig",
          "description": "Per-call configuration overrides applied to the active profile’s configuration, or otherwise the conversation default. Supplied scalar values, including zero, empty or false, replace the base value; omitted values inherit. Empty repeated or map values inherit. Use clear\\_tools to clear inherited tools and clear\\_client\\_tools to clear inherited client tools.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "setActiveProfileId",
          "description": "Set the active agent profile for this and subsequent conversation turns.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "setActiveProfileVersion",
          "description": "Version of the active agent profile forwarded with this turn.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "overrideMcpServers",
          "description": "MCP servers for this turn only. A nonempty list replaces the active profile’s or conversation’s list for tool discovery and execution; an empty list inherits the resolved configuration.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "experiment",
          "description": "Dataset-run attribution for a scripted evaluation turn. Leave unset for ordinary conversation traffic.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncResponse",
      "title": "SendMessageSyncResponse",
      "slug": "/api/models/schema-pmoc16rosr",
      "description": "Result of submitting a user message and waiting for generation output.",
      "semantics": "Result of submitting a user message and waiting for generation output.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendMessageSyncResponse",
        "slug": "/api/models/schema-pmoc16rosr"
      },
      "operationOwners": [
        {
          "key": "conversations:sendMessageSync",
          "slug": "/api/conversations/send-message-sync",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:sendMessageSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "runId",
          "description": "Identifier of the generation run associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "interruptedPriorRun",
          "description": "Whether submitting this turn interrupted a preceding generation run.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messages",
          "description": "Conversation messages returned by the generation segment.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Generation status reported when the synchronous wait returns.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "aggregateUsage",
          "description": "Aggregated model usage reported for the generation run.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Structured error for partial success scenarios (some messages generated before failure). Full failures propagate as TerminalError → HTTP error status + RpcError JSON body.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pendingClientTools",
          "description": "Tool calls dispatched for execution by the client.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientToolCursor",
          "description": "Latest client-tool dispatch sequence represented by this response.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsRequest",
      "title": "SubmitClientToolResultsRequest",
      "slug": "/api/models/schema-pjollucdn3",
      "description": "Input for returning client-side tool execution results to the conversation.",
      "semantics": "Input for returning client-side tool execution results to the conversation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SubmitClientToolResultsRequest",
        "slug": "/api/models/schema-pjollucdn3"
      },
      "operationOwners": [
        {
          "key": "conversations:submitClientToolResults",
          "slug": "/api/conversations/submit-client-tool-results",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:submitClientToolResults"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "results",
          "description": "Execution results for tools that ran on the client.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsResponse",
      "title": "SubmitClientToolResultsResponse",
      "slug": "/api/models/schema-oidmd83bhb",
      "description": "Result of returning client-side tool execution results to the conversation. Returned workflow information can be used to continue reconciliation through the pull API.",
      "semantics": "Result of returning client-side tool execution results to the conversation. Returned workflow information can be used to continue reconciliation through the pull API.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SubmitClientToolResultsResponse",
        "slug": "/api/models/schema-oidmd83bhb"
      },
      "operationOwners": [
        {
          "key": "conversations:submitClientToolResults",
          "slug": "/api/conversations/submit-client-tool-results",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:submitClientToolResults"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "runId",
          "description": "Identifier of the generation run, usable for retrieving its result or status after submitting client-tool results.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncRequest",
      "title": "SubmitClientToolResultsSyncRequest",
      "slug": "/api/models/schema-pjq4guc5kc",
      "description": "Input for returning client-side tool results and waiting for the next generation segment.",
      "semantics": "Input for returning client-side tool results and waiting for the next generation segment.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SubmitClientToolResultsSyncRequest",
        "slug": "/api/models/schema-pjq4guc5kc"
      },
      "operationOwners": [
        {
          "key": "conversations:submitClientToolResultsSync",
          "slug": "/api/conversations/submit-client-tool-results-sync",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "results",
          "description": "Execution results for tools that ran on the client.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientToolCursor",
          "description": "dispatch\\_seq this caller last observed — same semantics as AwaitGenerationRequest.client\\_tool\\_cursor. 0 on first call.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncResponse",
      "title": "SubmitClientToolResultsSyncResponse",
      "slug": "/api/models/schema-pmq43s2dgj",
      "description": "Result of returning client-side tool results and waiting for the next generation segment.",
      "semantics": "Result of returning client-side tool results and waiting for the next generation segment.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SubmitClientToolResultsSyncResponse",
        "slug": "/api/models/schema-pmq43s2dgj"
      },
      "operationOwners": [
        {
          "key": "conversations:submitClientToolResultsSync",
          "slug": "/api/conversations/submit-client-tool-results-sync",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:submitClientToolResultsSync"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "runId",
          "description": "Identifier of the generation run associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messages",
          "description": "Conversation messages returned by the generation segment.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Generation status reported for the next segment after tool results are submitted.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "aggregateUsage",
          "description": "Aggregated model usage reported for the generation run.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pendingClientTools",
          "description": "Tool calls dispatched for execution by the client.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "clientToolCursor",
          "description": "Latest client-tool dispatch sequence represented by this response.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Structured error for partial success scenarios. Full failures propagate as TerminalError → HTTP error status + RpcError JSON body.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SubmitToolApprovalsRequest",
      "title": "SubmitToolApprovalsRequest",
      "slug": "/api/models/schema-p14ousv4og",
      "description": "Input for submitting decisions for tool calls awaiting approval.",
      "semantics": "Input for submitting decisions for tool calls awaiting approval.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SubmitToolApprovalsRequest",
        "slug": "/api/models/schema-p14ousv4og"
      },
      "operationOwners": [
        {
          "key": "conversations:submitToolApprovals",
          "slug": "/api/conversations/submit-tool-approvals",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:submitToolApprovals"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "approvals",
          "description": "Approval decisions for the identified pending tool calls.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_SubmitToolApprovalsResponse",
      "title": "SubmitToolApprovalsResponse",
      "slug": "/api/models/schema-oierm6l48m",
      "description": "Result of submitting decisions for tool calls awaiting approval. This message declares no response fields.",
      "semantics": "Result of submitting decisions for tool calls awaiting approval. This message declares no response fields.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SubmitToolApprovalsResponse",
        "slug": "/api/models/schema-oierm6l48m"
      },
      "operationOwners": [
        {
          "key": "conversations:submitToolApprovals",
          "slug": "/api/conversations/submit-tool-approvals",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:submitToolApprovals"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_ThreadSummary",
      "title": "ThreadSummary",
      "slug": "/api/models/schema-p16s9mefht",
      "description": "Conversation summary returned by thread listing and detail operations.",
      "semantics": "Conversation summary returned by thread listing and detail operations.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ThreadSummary",
        "slug": "/api/models/schema-p16s9mefht"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:listThreads"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "threadId",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userId",
          "description": "Identifier of the user associated with the conversation thread.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "title",
          "description": "Display title of the conversation thread.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Labels associated with the conversation thread.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Lifecycle status recorded for the conversation thread.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messageCount",
          "description": "Number of messages recorded in the thread summary.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastMessagePreview",
          "description": "Text preview of the most recently projected message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastMessageAt",
          "description": "Timestamp of the most recently projected message.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Timestamp when the conversation thread was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Timestamp when the conversation thread summary was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Caller-supplied identifier associated with the conversation thread.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_UpdateContextManagementSettingsRequest",
      "title": "UpdateContextManagementSettingsRequest",
      "slug": "/api/models/schema-pmsdkur7pe",
      "description": "Input for updating the conversation’s context compaction configuration.",
      "semantics": "Input for updating the conversation’s context compaction configuration.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateContextManagementSettingsRequest",
        "slug": "/api/models/schema-pmsdkur7pe"
      },
      "operationOwners": [
        {
          "key": "conversations:updateContextManagementSettings",
          "slug": "/api/conversations/update-context-management-settings",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "contextManagementSettings",
          "description": "Configuration governing the conversation’s context management and compaction.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_UpdateContextManagementSettingsResponse",
      "title": "UpdateContextManagementSettingsResponse",
      "slug": "/api/models/schema-pmu88osa2f",
      "description": "Result of updating the conversation’s context compaction configuration.",
      "semantics": "Result of updating the conversation’s context compaction configuration.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateContextManagementSettingsResponse",
        "slug": "/api/models/schema-pmu88osa2f"
      },
      "operationOwners": [
        {
          "key": "conversations:updateContextManagementSettings",
          "slug": "/api/conversations/update-context-management-settings",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:updateContextManagementSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "contextManagementSettings",
          "description": "Configuration governing the conversation’s context management and compaction.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_UpdateDefaultGenerationConfigRequest",
      "title": "ConversationUpdateDefaultGenerationConfigRequest",
      "slug": "/api/models/schema-pjsq1qa85a",
      "description": "Input for updating the conversation’s base generation configuration.",
      "semantics": "Input for updating the conversation’s base generation configuration.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ConversationUpdateDefaultGenerationConfigRequest",
        "slug": "/api/models/schema-pjsq1qa85a"
      },
      "operationOwners": [
        {
          "key": "conversations:updateDefaultGenerationConfig",
          "slug": "/api/conversations/update-default-generation-config",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "defaultGenerationConfig",
          "description": "Base model and tool configuration for turns in this conversation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_UpdateDefaultGenerationConfigResponse",
      "title": "ConversationUpdateDefaultGenerationConfigResponse",
      "slug": "/api/models/schema-pjuact632u",
      "description": "Result of updating the conversation’s base generation configuration.",
      "semantics": "Result of updating the conversation’s base generation configuration.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ConversationUpdateDefaultGenerationConfigResponse",
        "slug": "/api/models/schema-pjuact632u"
      },
      "operationOwners": [
        {
          "key": "conversations:updateDefaultGenerationConfig",
          "slug": "/api/conversations/update-default-generation-config",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "defaultGenerationConfig",
          "description": "Base model and tool configuration for turns in this conversation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_UpdateMemoryRequest",
      "title": "UpdateMemoryRequest",
      "slug": "/api/models/schema-p188oda2di",
      "description": "Input for replacing the text of a memory record.",
      "semantics": "Input for replacing the text of a memory record.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateMemoryRequest",
        "slug": "/api/models/schema-p188oda2di"
      },
      "operationOwners": [
        {
          "key": "conversations:updateMemory",
          "slug": "/api/conversations/update-memory",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:updateMemory"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "memoryId",
          "description": "Memory ID to update",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "text",
          "description": "New memory text content",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_UpdateMemoryResponse",
      "title": "UpdateMemoryResponse",
      "slug": "/api/models/schema-oigm5i9dcc",
      "description": "Result of replacing the text of a memory record. This message declares no response fields.",
      "semantics": "Result of replacing the text of a memory record. This message declares no response fields.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateMemoryResponse",
        "slug": "/api/models/schema-oigm5i9dcc"
      },
      "operationOwners": [
        {
          "key": "conversations:updateMemory",
          "slug": "/api/conversations/update-memory",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:updateMemory"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_UpdatePromptVariablesRequest",
      "title": "UpdatePromptVariablesRequest",
      "slug": "/api/models/schema-p1aoadk8ce",
      "description": "Inputs for merging updated prompt variables into a conversation. The profile template is rendered with the updated variables on the next turn.",
      "semantics": "Inputs for merging updated prompt variables into a conversation. The profile template is rendered with the updated variables on the next turn.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdatePromptVariablesRequest",
        "slug": "/api/models/schema-p1aoadk8ce"
      },
      "operationOwners": [
        {
          "key": "conversations:updatePromptVariables",
          "slug": "/api/conversations/update-prompt-variables",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:updatePromptVariables"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "variables",
          "description": "Prompt-variable values to merge into the conversation’s settings.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updateMask",
          "description": "Field paths selecting which prompt variables to update.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_UpdatePromptVariablesResponse",
      "title": "UpdatePromptVariablesResponse",
      "slug": "/api/models/schema-pk0bphruc1",
      "description": "Result of merging prompt variables into conversation settings.",
      "semantics": "Result of merging prompt variables into conversation settings.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdatePromptVariablesResponse",
        "slug": "/api/models/schema-pk0bphruc1"
      },
      "operationOwners": [
        {
          "key": "conversations:updatePromptVariables",
          "slug": "/api/conversations/update-prompt-variables",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:updatePromptVariables"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "settings",
          "description": "The merged conversation settings.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_UpdateSettingsRequest",
      "title": "UpdateSettingsRequest",
      "slug": "/api/models/schema-pk2751b8gk",
      "description": "Input for updating the conversation’s settings.",
      "semantics": "Input for updating the conversation’s settings.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateSettingsRequest",
        "slug": "/api/models/schema-pk2751b8gk"
      },
      "operationOwners": [
        {
          "key": "conversations:updateSettings",
          "slug": "/api/conversations/update-settings",
          "direction": "request"
        }
      ],
      "usedBy": [
        "conversations:updateSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Identifier of the conversation thread.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "settings",
          "description": "Conversation settings to apply.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_gateway_v1_UpdateSettingsResponse",
      "title": "UpdateSettingsResponse",
      "slug": "/api/models/schema-pk4qssm91h",
      "description": "Result of updating the conversation’s settings.",
      "semantics": "Result of updating the conversation’s settings.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateSettingsResponse",
        "slug": "/api/models/schema-pk4qssm91h"
      },
      "operationOwners": [
        {
          "key": "conversations:updateSettings",
          "slug": "/api/conversations/update-settings",
          "direction": "response"
        }
      ],
      "usedBy": [
        "conversations:updateSettings"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "settings",
          "description": "Updated conversation settings returned by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_CreateCustomMCPServerRequest",
      "title": "CreateCustomMCPServerRequest",
      "slug": "/api/models/schema-pc8lg0h46j",
      "description": "Inputs for registering a tenant-owned MCP server and its connection configuration.",
      "semantics": "Inputs for registering a tenant-owned MCP server and its connection configuration.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateCustomMCPServerRequest",
        "slug": "/api/models/schema-pc8lg0h46j"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:createCustomMcpServer",
          "slug": "/api/mcp-servers/create-custom-mcp-server",
          "direction": "request"
        }
      ],
      "usedBy": [
        "mcp-servers:createCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Empty → \"default\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "server",
          "description": "MCP server configuration to register.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_CreateCustomMCPServerResponse",
      "title": "CreateCustomMCPServerResponse",
      "slug": "/api/models/schema-pcabagjnrr",
      "description": "Result payload for registering a tenant-owned MCP server and its connection configuration.",
      "semantics": "Result payload for registering a tenant-owned MCP server and its connection configuration.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateCustomMCPServerResponse",
        "slug": "/api/models/schema-pcabagjnrr"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:createCustomMcpServer",
          "slug": "/api/mcp-servers/create-custom-mcp-server",
          "direction": "response"
        }
      ],
      "usedBy": [
        "mcp-servers:createCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "server",
          "description": "MCP server configuration returned after registration.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_CustomMCPServer",
      "title": "CustomMCPServer",
      "slug": "/api/models/schema-p1cuh9jgfq",
      "description": "A project-scoped, HTTP-only MCP server definition, keyed (tenant\\_id, project\\_id, server\\_id). Its wire ID is \"custom:\\{server\\_id}\".\n\nCredentials must be stored as secret references; inline tokens must not be persisted in this server definition.\n\nauth\\_type selects the required credential fields. Authenticated modes require auth\\_secret\\_ref; NONE requires it to be empty. HEADER requires auth\\_header\\_name and QUERY requires auth\\_query\\_param; those names must be empty for every other mode. Inconsistent combinations are rejected before storage. Inline credentials are not accepted.\n\n### Input constraints\n\n### server\\_id\n\nThe server\\_id must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, or hyphen.\n\n### auth\\_header\\_name\n\nThe auth\\_header\\_name may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, or one of these literal punctuation characters: ! # $ % & ' \\* + . ^ \\_ \\` | \\~ -. No other character is accepted.\n\n### auth\\_query\\_param\n\nThe auth\\_query\\_param may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, period, underscore, tilde, or hyphen. No other character is accepted.\n\n### request\\_timeout\n\nThe request\\_timeout duration must be no greater than 120 seconds.",
      "semantics": "A project-scoped, HTTP-only MCP server definition, keyed (tenant\\_id, project\\_id, server\\_id). Its wire ID is \"custom:\\{server\\_id}\".\n\nCredentials must be stored as secret references; inline tokens must not be persisted in this server definition.\n\nauth\\_type selects the required credential fields. Authenticated modes require auth\\_secret\\_ref; NONE requires it to be empty. HEADER requires auth\\_header\\_name and QUERY requires auth\\_query\\_param; those names must be empty for every other mode. Inconsistent combinations are rejected before storage. Inline credentials are not accepted.\n\n### Input constraints\n\n### server\\_id\n\nThe server\\_id must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, or hyphen.\n\n### auth\\_header\\_name\n\nThe auth\\_header\\_name may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, or one of these literal punctuation characters: ! # $ % & ' \\* + . ^ \\_ \\` | \\~ -. No other character is accepted.\n\n### auth\\_query\\_param\n\nThe auth\\_query\\_param may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, period, underscore, tilde, or hyphen. No other character is accepted.\n\n### request\\_timeout\n\nThe request\\_timeout duration must be no greater than 120 seconds.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "CustomMCPServer",
        "slug": "/api/models/schema-p1cuh9jgfq"
      },
      "operationOwners": [],
      "usedBy": [
        "mcp-servers:createCustomMcpServer",
        "mcp-servers:getCustomMcpServer",
        "mcp-servers:listCustomMcpServers",
        "mcp-servers:updateCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "serverId",
          "description": "Unique within the project.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "displayName",
          "description": "Display name used for the registered MCP server.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endpoint",
          "description": "HTTPS endpoint for Streamable HTTP; local and standard-input/output transports are unsupported. The egress guard also rejects prohibited destinations such as metadata, loopback, private-network and in-cluster addresses. HTTPS alone does not satisfy these destination checks.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "authType",
          "description": "Authentication mechanism configured for the MCP server.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authSecretRef",
          "description": "Required credential reference for BEARER, HEADER and QUERY authentication. Resolves within this server's tenant and project; only the secret name is returned, never its value.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authHeaderName",
          "description": "Name of the custom authentication header. The egress guard also rejects protected header names; satisfying the field's character pattern alone does not permit every header.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authQueryParam",
          "description": "Required for QUERY auth; the vendor's parameter name (e.g. \"tavilyApiKey\").\n\nRestricted to RFC 3986 unreserved characters, which is NOT the same set as auth\\_header\\_name's RFC 7230 tchar: that set contains '&' (would append a second parameter), '#' (would truncate the URL at a fragment), '%' (would open a malformed escape) and '+' (decodes as a space). The query-parameter name uses its own character set.\n\nEmpty is allowed — populated only for QUERY auth.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enabled",
          "description": "Whether this configuration is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requestTimeout",
          "description": "Time allowed for a remote request. Omission or a nonpositive duration uses 30 seconds; positive durations below one second are raised to one second. Long waits can delay the conversation while the remote server is unavailable.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Output-only revision assigned by the store and incremented on updates. Ignored on writes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdBy",
          "description": "Output-only identity of the caller that registered the server. Ignored on writes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Output-only creation time assigned by the store. Ignored on writes.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Output-only last-update time assigned by the store. Ignored on writes.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_CustomMCPServerInput",
      "title": "CustomMCPServer",
      "slug": "/api/models/schema-p1cuh9jgfq-input",
      "description": "A project-scoped, HTTP-only MCP server definition, keyed (tenant\\_id, project\\_id, server\\_id). Its wire ID is \"custom:\\{server\\_id}\".\n\nCredentials must be stored as secret references; inline tokens must not be persisted in this server definition.\n\nauth\\_type selects the required credential fields. Authenticated modes require auth\\_secret\\_ref; NONE requires it to be empty. HEADER requires auth\\_header\\_name and QUERY requires auth\\_query\\_param; those names must be empty for every other mode. Inconsistent combinations are rejected before storage. Inline credentials are not accepted.\n\n### Input constraints\n\n### server\\_id\n\nThe server\\_id must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, or hyphen.\n\n### auth\\_header\\_name\n\nThe auth\\_header\\_name may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, or one of these literal punctuation characters: ! # $ % & ' \\* + . ^ \\_ \\` | \\~ -. No other character is accepted.\n\n### auth\\_query\\_param\n\nThe auth\\_query\\_param may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, period, underscore, tilde, or hyphen. No other character is accepted.\n\n### request\\_timeout\n\nThe request\\_timeout duration must be no greater than 120 seconds.",
      "semantics": "A project-scoped, HTTP-only MCP server definition, keyed (tenant\\_id, project\\_id, server\\_id). Its wire ID is \"custom:\\{server\\_id}\".\n\nCredentials must be stored as secret references; inline tokens must not be persisted in this server definition.\n\nauth\\_type selects the required credential fields. Authenticated modes require auth\\_secret\\_ref; NONE requires it to be empty. HEADER requires auth\\_header\\_name and QUERY requires auth\\_query\\_param; those names must be empty for every other mode. Inconsistent combinations are rejected before storage. Inline credentials are not accepted.\n\n### Input constraints\n\n### server\\_id\n\nThe server\\_id must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, or hyphen.\n\n### auth\\_header\\_name\n\nThe auth\\_header\\_name may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, or one of these literal punctuation characters: ! # $ % & ' \\* + . ^ \\_ \\` | \\~ -. No other character is accepted.\n\n### auth\\_query\\_param\n\nThe auth\\_query\\_param may be empty text. Otherwise it must contain one through 128 characters, each an ASCII letter, digit, period, underscore, tilde, or hyphen. No other character is accepted.\n\n### request\\_timeout\n\nThe request\\_timeout duration must be no greater than 120 seconds.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "CustomMCPServer",
        "slug": "/api/models/schema-p1cuh9jgfq"
      },
      "operationOwners": [],
      "usedBy": [
        "mcp-servers:createCustomMcpServer",
        "mcp-servers:updateCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "serverId",
          "description": "Unique within the project.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "displayName",
          "description": "Display name used for the registered MCP server.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endpoint",
          "description": "HTTPS endpoint for Streamable HTTP; local and standard-input/output transports are unsupported. The egress guard also rejects prohibited destinations such as metadata, loopback, private-network and in-cluster addresses. HTTPS alone does not satisfy these destination checks.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "authType",
          "description": "Authentication mechanism configured for the MCP server.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authSecretRef",
          "description": "Required credential reference for BEARER, HEADER and QUERY authentication. Resolves within this server's tenant and project; only the secret name is returned, never its value.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authHeaderName",
          "description": "Name of the custom authentication header. The egress guard also rejects protected header names; satisfying the field's character pattern alone does not permit every header.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authQueryParam",
          "description": "Required for QUERY auth; the vendor's parameter name (e.g. \"tavilyApiKey\").\n\nRestricted to RFC 3986 unreserved characters, which is NOT the same set as auth\\_header\\_name's RFC 7230 tchar: that set contains '&' (would append a second parameter), '#' (would truncate the URL at a fragment), '%' (would open a malformed escape) and '+' (decodes as a space). The query-parameter name uses its own character set.\n\nEmpty is allowed — populated only for QUERY auth.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enabled",
          "description": "Whether this configuration is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requestTimeout",
          "description": "Time allowed for a remote request. Omission or a nonpositive duration uses 30 seconds; positive durations below one second are raised to one second. Long waits can delay the conversation while the remote server is unavailable.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Output-only revision assigned by the store and incremented on updates. Ignored on writes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdBy",
          "description": "Output-only identity of the caller that registered the server. Ignored on writes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Output-only creation time assigned by the store. Ignored on writes.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Output-only last-update time assigned by the store. Ignored on writes.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_DeleteCustomMCPServerRequest",
      "title": "DeleteCustomMCPServerRequest",
      "slug": "/api/models/schema-p1e86gor47",
      "description": "Inputs for removing a tenant-owned MCP server registration.",
      "semantics": "Inputs for removing a tenant-owned MCP server registration.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteCustomMCPServerRequest",
        "slug": "/api/models/schema-p1e86gor47"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:deleteCustomMcpServer",
          "slug": "/api/mcp-servers/delete-custom-mcp-server",
          "direction": "request"
        }
      ],
      "usedBy": [
        "mcp-servers:deleteCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverId",
          "description": "Identifier of the MCP server associated with the operation or tool.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_DeleteCustomMCPServerResponse",
      "title": "DeleteCustomMCPServerResponse",
      "slug": "/api/models/schema-oiih03mgci",
      "description": "Result payload for removing a tenant-owned MCP server registration.",
      "semantics": "Result payload for removing a tenant-owned MCP server registration.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteCustomMCPServerResponse",
        "slug": "/api/models/schema-oiih03mgci"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:deleteCustomMcpServer",
          "slug": "/api/mcp-servers/delete-custom-mcp-server",
          "direction": "response"
        }
      ],
      "usedBy": [
        "mcp-servers:deleteCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deleted",
          "description": "False when the server did not exist; the call still succeeds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_GetCustomMCPServerRequest",
      "title": "GetCustomMCPServerRequest",
      "slug": "/api/models/schema-p1fjk7f2af",
      "description": "Inputs for reading a tenant-owned MCP server registration.",
      "semantics": "Inputs for reading a tenant-owned MCP server registration.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetCustomMCPServerRequest",
        "slug": "/api/models/schema-p1fjk7f2af"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:getCustomMcpServer",
          "slug": "/api/mcp-servers/get-custom-mcp-server",
          "direction": "request"
        }
      ],
      "usedBy": [
        "mcp-servers:getCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverId",
          "description": "Identifier of the MCP server associated with the operation or tool.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_GetCustomMCPServerResponse",
      "title": "GetCustomMCPServerResponse",
      "slug": "/api/models/schema-pcc62sh2o3",
      "description": "Result payload for reading a tenant-owned MCP server registration.",
      "semantics": "Result payload for reading a tenant-owned MCP server registration.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetCustomMCPServerResponse",
        "slug": "/api/models/schema-pcc62sh2o3"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:getCustomMcpServer",
          "slug": "/api/mcp-servers/get-custom-mcp-server",
          "direction": "response"
        }
      ],
      "usedBy": [
        "mcp-servers:getCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "server",
          "description": "MCP server configuration returned by the lookup.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_ListCustomMCPServersRequest",
      "title": "ListCustomMCPServersRequest",
      "slug": "/api/models/schema-p1had6ju4i",
      "description": "Inputs for listing MCP server registrations belonging to the tenant.",
      "semantics": "Inputs for listing MCP server registrations belonging to the tenant.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListCustomMCPServersRequest",
        "slug": "/api/models/schema-p1had6ju4i"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:listCustomMcpServers",
          "slug": "/api/mcp-servers/list-custom-mcp-servers",
          "direction": "request"
        }
      ],
      "usedBy": [
        "mcp-servers:listCustomMcpServers"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authSecretNameFilter",
          "description": "When set, return only MCP servers whose auth\\_secret\\_ref names this secret.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeDisabled",
          "description": "Default false → only enabled servers.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_ListCustomMCPServersResponse",
      "title": "ListCustomMCPServersResponse",
      "slug": "/api/models/schema-pcdrsu0bit",
      "description": "Result payload for listing MCP server registrations belonging to the tenant.",
      "semantics": "Result payload for listing MCP server registrations belonging to the tenant.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListCustomMCPServersResponse",
        "slug": "/api/models/schema-pcdrsu0bit"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:listCustomMcpServers",
          "slug": "/api/mcp-servers/list-custom-mcp-servers",
          "direction": "response"
        }
      ],
      "usedBy": [
        "mcp-servers:listCustomMcpServers"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "servers",
          "description": "MCP server configurations returned by the listing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "total",
          "description": "Total number of entries reported by the listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_TestCustomMCPServerConnectionRequest",
      "title": "TestCustomMCPServerConnectionRequest",
      "slug": "/api/models/schema-p1jmsb56gg",
      "description": "Inputs for testing connectivity and tool discovery for a tenant-owned MCP server.",
      "semantics": "Inputs for testing connectivity and tool discovery for a tenant-owned MCP server.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "TestCustomMCPServerConnectionRequest",
        "slug": "/api/models/schema-p1jmsb56gg"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:testCustomMcpServerConnection",
          "slug": "/api/mcp-servers/test-custom-mcp-server-connection",
          "direction": "request"
        }
      ],
      "usedBy": [
        "mcp-servers:testCustomMcpServerConnection"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverId",
          "description": "Identifier of the MCP server associated with the operation or tool.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_TestCustomMCPServerConnectionResponse",
      "title": "TestCustomMCPServerConnectionResponse",
      "slug": "/api/models/schema-oik7eq5rh1",
      "description": "Result payload for testing connectivity and tool discovery for a tenant-owned MCP server.",
      "semantics": "Result payload for testing connectivity and tool discovery for a tenant-owned MCP server.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "TestCustomMCPServerConnectionResponse",
        "slug": "/api/models/schema-oik7eq5rh1"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:testCustomMcpServerConnection",
          "slug": "/api/mcp-servers/test-custom-mcp-server-connection",
          "direction": "response"
        }
      ],
      "usedBy": [
        "mcp-servers:testCustomMcpServerConnection"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "success",
          "description": "Whether the operation reports a successful result.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toolCount",
          "description": "Number of tools reported by the MCP server.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "latencyMs",
          "description": "Measured MCP connection-test latency, in milliseconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Sanitized failure reason. Never contains the resolved credential, the auth header, or internal path details.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_UpdateCustomMCPServerRequest",
      "title": "UpdateCustomMCPServerRequest",
      "slug": "/api/models/schema-pcf91dkfha",
      "description": "Inputs for changing a tenant-owned MCP server’s connection configuration.",
      "semantics": "Inputs for changing a tenant-owned MCP server’s connection configuration.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateCustomMCPServerRequest",
        "slug": "/api/models/schema-pcf91dkfha"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:updateCustomMcpServer",
          "slug": "/api/mcp-servers/update-custom-mcp-server",
          "direction": "request"
        }
      ],
      "usedBy": [
        "mcp-servers:updateCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "projectId",
          "description": "Identifier of the project associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "serverId",
          "description": "Identifier of the MCP server associated with the operation or tool.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "server",
          "description": "MCP server configuration to apply.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "llm_v1_services_mcp_v1_UpdateCustomMCPServerResponse",
      "title": "UpdateCustomMCPServerResponse",
      "slug": "/api/models/schema-pchn63pm6h",
      "description": "Result payload for changing a tenant-owned MCP server’s connection configuration.",
      "semantics": "Result payload for changing a tenant-owned MCP server’s connection configuration.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateCustomMCPServerResponse",
        "slug": "/api/models/schema-pchn63pm6h"
      },
      "operationOwners": [
        {
          "key": "mcp-servers:updateCustomMcpServer",
          "slug": "/api/mcp-servers/update-custom-mcp-server",
          "direction": "response"
        }
      ],
      "usedBy": [
        "mcp-servers:updateCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "server",
          "description": "Updated MCP server configuration.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_workflows_generation_v1_ClientToolDispatch",
      "title": "ClientToolDispatch",
      "slug": "/api/models/schema-qj0o2cvv4e",
      "description": "A batch of client-tool calls awaiting execution for a conversation turn.",
      "semantics": "A batch of client-tool calls awaiting execution for a conversation turn.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ClientToolDispatch",
        "slug": "/api/models/schema-qj0o2cvv4e"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "toolCalls",
          "description": "Tool calls emitted by the model or returned by the operation.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dispatchSeq",
          "description": "Client-tool dispatch sequence used to wait for a later dispatch batch.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "assistantMessage",
          "description": "Assistant message that armed this batch. The finish reason can be the same for a client-tool turn and an MCP turn; use the run status to distinguish them.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "llm_v1_workflows_generation_v1_ClientToolDispatchInput",
      "title": "ClientToolDispatch",
      "slug": "/api/models/schema-qj0o2cvv4e-input",
      "description": "A batch of client-tool calls awaiting execution for a conversation turn.",
      "semantics": "A batch of client-tool calls awaiting execution for a conversation turn.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ClientToolDispatch",
        "slug": "/api/models/schema-qj0o2cvv4e"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/9ftjkkjhfa"
      ],
      "fields": [
        {
          "name": "toolCalls",
          "description": "Tool calls emitted by the model or returned by the operation.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dispatchSeq",
          "description": "Client-tool dispatch sequence used to wait for a later dispatch batch.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "assistantMessage",
          "description": "Assistant message that armed this batch. The finish reason can be the same for a client-tool turn and an MCP turn; use the run status to distinguish them.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "memory_v1_Memory",
      "title": "Memory",
      "slug": "/api/models/schema-1k63a85bkp",
      "description": "A memory is a stored statement associated with a user and, when recorded, an agent or conversation and a run or session. The `appId` field is the existing public wire name for the tenant identifier. The field name remains unchanged for compatibility.\n\n`metadata` is an object whose values are strings. A search can add a `score`; the provider determines its scale. The score does not measure factual truth. `createdAt` and `updatedAt` are RFC 3339 timestamp strings and may include fractional seconds. Absent timestamps mean that no value was returned.\n\nMemory text can be incomplete, stale or incorrect. Show the text and available timestamps to the user before acting on it. Search results are a selection by relevance, not a full account of stored memory. See the [memory cookbook](/managed-agents/memory-knowledge) for review and correction tasks.",
      "semantics": "A memory is a stored statement associated with a user and, when recorded, an agent or conversation and a run or session. The `appId` field is the existing public wire name for the tenant identifier. The field name remains unchanged for compatibility.\n\n`metadata` is an object whose values are strings. A search can add a `score`; the provider determines its scale. The score does not measure factual truth. `createdAt` and `updatedAt` are RFC 3339 timestamp strings and may include fractional seconds. Absent timestamps mean that no value was returned.\n\nMemory text can be incomplete, stale or incorrect. Show the text and available timestamps to the user before acting on it. Search results are a selection by relevance, not a full account of stored memory. See the [memory cookbook](/managed-agents/memory-knowledge) for review and correction tasks.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Memory",
        "slug": "/api/models/schema-1k63a85bkp"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:getMemory",
        "conversations:listMemories",
        "conversations:searchMemories"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "id",
          "description": "Unique memory identifier.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "memory",
          "description": "Stored fact text. It may be incomplete, stale or incorrect.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userId",
          "description": "User associated with the memory.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "agentId",
          "description": "Agent or conversation associated with the memory.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "appId",
          "description": "Tenant identifier associated with the memory.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "runId",
          "description": "Associated run or session identifier.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional string-valued metadata attached to the memory.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "score",
          "description": "Relevance score returned by search. Its scale is provider-specific and is not a probability that the fact is correct.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Creation time as an RFC 3339 timestamp; absent when unavailable.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Last update time as an RFC 3339 timestamp; absent when unavailable.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "memory_v1_Relation",
      "title": "Memory relation",
      "slug": "/api/models/schema-1k84aa8jbi",
      "description": "A relation is a directed edge from `source` to `destination`, labeled by `relationship`. These are entity names and an open relationship string; no fixed relationship enumeration is enforced by this contract.\n\nRelationships may be absent even when memory records are returned. They describe extracted associations, not verified facts, ownership permissions or lifecycle transitions.",
      "semantics": "A relation is a directed edge from `source` to `destination`, labeled by `relationship`. These are entity names and an open relationship string; no fixed relationship enumeration is enforced by this contract.\n\nRelationships may be absent even when memory records are returned. They describe extracted associations, not verified facts, ownership permissions or lifecycle transitions.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Memory relation",
        "slug": "/api/models/schema-1k84aa8jbi"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:searchMemories"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "source",
          "description": "Source entity name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "relationship",
          "description": "Open string describing the relationship. Example labels do not restrict the allowed values.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "destination",
          "description": "Destination entity name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_AddSubscribersToTopicResponse",
      "title": "AddSubscribersToTopicResponse",
      "slug": "/api/models/schema-pcjg4lul6i",
      "description": "Result payload for adding selected users to a notification topic’s recipient membership.",
      "semantics": "Result payload for adding selected users to a notification topic’s recipient membership.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "AddSubscribersToTopicResponse",
        "slug": "/api/models/schema-pcjg4lul6i"
      },
      "operationOwners": [
        {
          "key": "notifications:addSubscribersToTopic",
          "slug": "/api/notifications/add-subscribers-to-topic",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:addSubscribersToTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "result",
          "description": "Accepted and failed subscriber counts with per-subscriber errors from the membership change.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ArchiveAllInboxMessagesResponse",
      "title": "ArchiveAllInboxMessagesResponse",
      "slug": "/api/models/schema-oim35pb82b",
      "description": "Result payload for archiving inbox notifications selected by the supplied tag filter.",
      "semantics": "Result payload for archiving inbox notifications selected by the supplied tag filter.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ArchiveAllInboxMessagesResponse",
        "slug": "/api/models/schema-oim35pb82b"
      },
      "operationOwners": [
        {
          "key": "notifications:archiveAllInboxMessages",
          "slug": "/api/notifications/archive-all-inbox-messages",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:archiveAllInboxMessages"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "archivedCount",
          "description": "Number of inbox entries reported archived by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ArchiveAllReadInboxMessagesResponse",
      "title": "ArchiveAllReadInboxMessagesResponse",
      "slug": "/api/models/schema-oior0sghiv",
      "description": "Mirrors ArchiveAllInboxMessagesResponse — same shape, distinct type so the two bulk-archive RPC contracts can evolve independently.",
      "semantics": "Mirrors ArchiveAllInboxMessagesResponse — same shape, distinct type so the two bulk-archive RPC contracts can evolve independently.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ArchiveAllReadInboxMessagesResponse",
        "slug": "/api/models/schema-oior0sghiv"
      },
      "operationOwners": [
        {
          "key": "notifications:archiveAllReadInboxMessages",
          "slug": "/api/notifications/archive-all-read-inbox-messages",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:archiveAllReadInboxMessages"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "archivedCount",
          "description": "Number of inbox entries reported archived by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ArchiveInboxMessageResponse",
      "title": "ArchiveInboxMessageResponse",
      "slug": "/api/models/schema-p1l7ih4vrr",
      "description": "Result payload for archiving one inbox notification while retaining its provider record.",
      "semantics": "Result payload for archiving one inbox notification while retaining its provider record.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ArchiveInboxMessageResponse",
        "slug": "/api/models/schema-p1l7ih4vrr"
      },
      "operationOwners": [
        {
          "key": "notifications:archiveInboxMessage",
          "slug": "/api/notifications/archive-inbox-message",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:archiveInboxMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_BulkTriggerEvent",
      "title": "BulkTriggerEvent",
      "slug": "/api/models/schema-oiqb7f8bbv",
      "description": "One notification workflow trigger included in a bulk submission.",
      "semantics": "One notification workflow trigger included in a bulk submission.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "BulkTriggerEvent",
        "slug": "/api/models/schema-oiqb7f8bbv"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:sendBulkNotification"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Identifier of the notification workflow to trigger.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "userId",
          "description": "Identifier of the user associated with the operation.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "payload",
          "description": "Template variables and event data passed to the notification workflow.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "overrides",
          "description": "Provider-specific overrides applied to the notification trigger.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_BulkTriggerResult",
      "title": "BulkTriggerResult",
      "slug": "/api/models/schema-oisl2i7j7o",
      "description": "Provider acknowledgement and errors for one bulk notification trigger.",
      "semantics": "Provider acknowledgement and errors for one bulk notification trigger.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "BulkTriggerResult",
        "slug": "/api/models/schema-oisl2i7j7o"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:sendBulkNotification"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "acknowledged",
          "description": "Whether the notification provider acknowledged the trigger.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "errors",
          "description": "Errors reported while processing notification requests.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_BulkUpdatePreferencesResponse",
      "title": "BulkUpdatePreferencesResponse",
      "slug": "/api/models/schema-oiuag0551r",
      "description": "Result payload for applying channel-preference changes across selected notification workflows.",
      "semantics": "Result payload for applying channel-preference changes across selected notification workflows.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "BulkUpdatePreferencesResponse",
        "slug": "/api/models/schema-oiuag0551r"
      },
      "operationOwners": [
        {
          "key": "notifications:bulkUpdatePreferences",
          "slug": "/api/notifications/bulk-update-preferences",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:bulkUpdatePreferences"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "updatedCount",
          "description": "Number of preference entries reported updated.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_CancelDigestEventResponse",
      "title": "CancelDigestEventResponse",
      "slug": "/api/models/schema-oj0t0ql7bu",
      "description": "Result payload for cancelling a queued notification digest event.",
      "semantics": "Result payload for cancelling a queued notification digest event.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CancelDigestEventResponse",
        "slug": "/api/models/schema-oj0t0ql7bu"
      },
      "operationOwners": [
        {
          "key": "notifications:cancelDigestEvent",
          "slug": "/api/notifications/cancel-digest-event",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:cancelDigestEvent"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "cancelled",
          "description": "Whether the notification cancellation was acknowledged.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "message",
          "description": "Diagnostic or descriptive text returned by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_CancelNotificationResponse",
      "title": "CancelNotificationResponse",
      "slug": "/api/models/schema-oj2u8cjhui",
      "description": "Result payload for cancelling a pending notification by transaction identifier.",
      "semantics": "Result payload for cancelling a pending notification by transaction identifier.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CancelNotificationResponse",
        "slug": "/api/models/schema-oj2u8cjhui"
      },
      "operationOwners": [
        {
          "key": "notifications:cancelNotification",
          "slug": "/api/notifications/cancel-notification",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:cancelNotification"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "cancelled",
          "description": "Whether the notification cancellation was acknowledged.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "message",
          "description": "Diagnostic or descriptive text returned by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ChannelRegistration",
      "title": "ChannelRegistration",
      "slug": "/api/models/schema-1kaqut27uf",
      "description": "Registration state and credential count for one notification channel.",
      "semantics": "Registration state and credential count for one notification channel.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ChannelRegistration",
        "slug": "/api/models/schema-1kaqut27uf"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:getRegisteredChannels",
        "notifications:getSubscriber"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "channel",
          "description": "Notification channel represented by this registration.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "registered",
          "description": "Whether the subscriber has a registration for this channel.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "credentialCount",
          "description": "Number of delivery credentials registered for the channel.\n\ne.g., number of device tokens",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ChannelToggles",
      "title": "ChannelToggles",
      "slug": "/api/models/schema-oj4cvo85fs",
      "description": "Per-channel notification toggles. All fields are optional so callers can patch only the channels they want to change; omitted fields remain unchanged.",
      "semantics": "Per-channel notification toggles. All fields are optional so callers can patch only the channels they want to change; omitted fields remain unchanged.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ChannelToggles",
        "slug": "/api/models/schema-oj4cvo85fs"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:getPreferences",
        "notifications:getSubscriber"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "inApp",
          "description": "Whether in-app notification delivery is enabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "push",
          "description": "Whether push notification delivery is enabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "email",
          "description": "Whether email notification delivery is enabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sms",
          "description": "Whether SMS notification delivery is enabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "chat",
          "description": "Whether chat notification delivery is enabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ChannelTogglesInput",
      "title": "ChannelToggles",
      "slug": "/api/models/schema-oj4cvo85fs-input",
      "description": "Per-channel notification toggles. All fields are optional so callers can patch only the channels they want to change; omitted fields remain unchanged.",
      "semantics": "Per-channel notification toggles. All fields are optional so callers can patch only the channels they want to change; omitted fields remain unchanged.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ChannelToggles",
        "slug": "/api/models/schema-oj4cvo85fs"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:bulkUpdatePreferences",
        "notifications:updateGlobalPreference",
        "notifications:updateWorkflowPreference"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "inApp",
          "description": "Whether in-app notification delivery is enabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "push",
          "description": "Whether push notification delivery is enabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "email",
          "description": "Whether email notification delivery is enabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sms",
          "description": "Whether SMS notification delivery is enabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "chat",
          "description": "Whether chat notification delivery is enabled.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_CheckTopicSubscriptionResponse",
      "title": "CheckTopicSubscriptionResponse",
      "slug": "/api/models/schema-oj6cmlcnb2",
      "description": "Result payload for checking whether a user belongs to a notification topic.",
      "semantics": "Result payload for checking whether a user belongs to a notification topic.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CheckTopicSubscriptionResponse",
        "slug": "/api/models/schema-oj6cmlcnb2"
      },
      "operationOwners": [
        {
          "key": "notifications:checkTopicSubscription",
          "slug": "/api/notifications/check-topic-subscription",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:checkTopicSubscription"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "isSubscribed",
          "description": "Whether the user is subscribed to the selected topic.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_CompleteInboxActionResponse",
      "title": "CompleteInboxActionResponse",
      "slug": "/api/models/schema-p1n1661ioi",
      "description": "Result payload for marking an inbox notification’s action completed.",
      "semantics": "Result payload for marking an inbox notification’s action completed.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CompleteInboxActionResponse",
        "slug": "/api/models/schema-p1n1661ioi"
      },
      "operationOwners": [
        {
          "key": "notifications:completeInboxAction",
          "slug": "/api/notifications/complete-inbox-action",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:completeInboxAction"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ConfigureProviderResponse",
      "title": "ConfigureProviderResponse",
      "slug": "/api/models/schema-oj8qk0k0pb",
      "description": "Result payload for configuring credentials and activation for a notification delivery provider.",
      "semantics": "Result payload for configuring credentials and activation for a notification delivery provider.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ConfigureProviderResponse",
        "slug": "/api/models/schema-oj8qk0k0pb"
      },
      "operationOwners": [
        {
          "key": "notifications:configureProvider",
          "slug": "/api/notifications/configure-provider",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:configureProvider"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "integrationId",
          "description": "Identifier of the provider integration in Novu.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "active",
          "description": "Whether the resource is marked active.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_CreateSubscriberResponse",
      "title": "CreateSubscriberResponse",
      "slug": "/api/models/schema-oj9kvlmgc5",
      "description": "Result payload for creating a notification subscriber with contact and locale attributes.",
      "semantics": "Result payload for creating a notification subscriber with contact and locale attributes.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateSubscriberResponse",
        "slug": "/api/models/schema-oj9kvlmgc5"
      },
      "operationOwners": [
        {
          "key": "notifications:createSubscriber",
          "slug": "/api/notifications/create-subscriber",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:createSubscriber"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "novuSubscriberId",
          "description": "Subscriber identifier returned by Novu.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "subscriberId",
          "description": "Identifier of the notification subscriber.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_CreateTopicResponse",
      "title": "CreateTopicResponse",
      "slug": "/api/models/schema-ojb4ftbsn4",
      "description": "Result payload for creating a named notification topic with a caller-selected key.",
      "semantics": "Result payload for creating a named notification topic with a caller-selected key.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateTopicResponse",
        "slug": "/api/models/schema-ojb4ftbsn4"
      },
      "operationOwners": [
        {
          "key": "notifications:createTopic",
          "slug": "/api/notifications/create-topic",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:createTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "topicKey",
          "description": "Caller-facing key identifying a notification topic.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "topicId",
          "description": "Provider-assigned identifier of the notification topic.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_CreateWorkflowResponse",
      "title": "CreateWorkflowResponse",
      "slug": "/api/models/schema-ojdj5ifeeu",
      "description": "Result payload for registering a notification workflow definition with the provider.",
      "semantics": "Result payload for registering a notification workflow definition with the provider.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateWorkflowResponse",
        "slug": "/api/models/schema-ojdj5ifeeu"
      },
      "operationOwners": [
        {
          "key": "notifications:createWorkflow",
          "slug": "/api/notifications/create-workflow",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:createWorkflow"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflow",
          "description": "Notification workflow definition supplied to or returned by the provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_DeleteInboxMessageResponse",
      "title": "DeleteInboxMessageResponse",
      "slug": "/api/models/schema-p1prrf1lk6",
      "description": "Result payload for removing an identified message from the subscriber’s notification inbox.",
      "semantics": "Result payload for removing an identified message from the subscriber’s notification inbox.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteInboxMessageResponse",
        "slug": "/api/models/schema-p1prrf1lk6"
      },
      "operationOwners": [
        {
          "key": "notifications:deleteInboxMessage",
          "slug": "/api/notifications/delete-inbox-message",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:deleteInboxMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_DeleteSubscriberResponse",
      "title": "DeleteSubscriberResponse",
      "slug": "/api/models/schema-p1rg3i8i10",
      "description": "Result payload for removing the subscriber’s notification-provider record.",
      "semantics": "Result payload for removing the subscriber’s notification-provider record.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteSubscriberResponse",
        "slug": "/api/models/schema-p1rg3i8i10"
      },
      "operationOwners": [
        {
          "key": "notifications:deleteSubscriber",
          "slug": "/api/notifications/delete-subscriber",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:deleteSubscriber"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_DeleteTopicResponse",
      "title": "DeleteTopicResponse",
      "slug": "/api/models/schema-p1tto6fr85",
      "description": "Result payload for removing an identified notification topic.",
      "semantics": "Result payload for removing an identified notification topic.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteTopicResponse",
        "slug": "/api/models/schema-p1tto6fr85"
      },
      "operationOwners": [
        {
          "key": "notifications:deleteTopic",
          "slug": "/api/notifications/delete-topic",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:deleteTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_DeleteWorkflowResponse",
      "title": "DeleteWorkflowResponse",
      "slug": "/api/models/schema-ojfm45kktv",
      "description": "Result payload for removing an identified notification workflow definition.",
      "semantics": "Result payload for removing an identified notification workflow definition.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteWorkflowResponse",
        "slug": "/api/models/schema-ojfm45kktv"
      },
      "operationOwners": [
        {
          "key": "notifications:deleteWorkflow",
          "slug": "/api/notifications/delete-workflow",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:deleteWorkflow"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Identifier of the notification workflow selected for deletion.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetDeliveryStatusResponse",
      "title": "GetDeliveryStatusResponse",
      "slug": "/api/models/schema-ojh34bur8q",
      "description": "Result payload for reading provider activity for a notification transaction.",
      "semantics": "Result payload for reading provider activity for a notification transaction.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetDeliveryStatusResponse",
        "slug": "/api/models/schema-ojh34bur8q"
      },
      "operationOwners": [
        {
          "key": "notifications:getDeliveryStatus",
          "slug": "/api/notifications/get-delivery-status",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getDeliveryStatus"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "activity",
          "description": "Notification activity entries returned by the provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetInboxFeedResponse",
      "title": "GetInboxFeedResponse",
      "slug": "/api/models/schema-pcl24i0j95",
      "description": "Result payload for paging through a subscriber’s inbox with read-state and category filters.",
      "semantics": "Result payload for paging through a subscriber’s inbox with read-state and category filters.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetInboxFeedResponse",
        "slug": "/api/models/schema-pcl24i0j95"
      },
      "operationOwners": [
        {
          "key": "notifications:getInboxFeed",
          "slug": "/api/notifications/get-inbox-feed",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getInboxFeed"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "messages",
          "description": "Inbox messages returned after applying the selected query or state change.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Total number of matching entries reported by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number reported for the returned inbox feed.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Page size reported for the returned inbox feed.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hasMore",
          "description": "Whether the listing reports additional entries beyond this page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetInboxSessionResponse",
      "title": "GetInboxSessionResponse",
      "slug": "/api/models/schema-ojjvdif2mc",
      "description": "Result payload for issuing connection details for a subscriber’s inbox session.",
      "semantics": "Result payload for issuing connection details for a subscriber’s inbox session.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetInboxSessionResponse",
        "slug": "/api/models/schema-ojjvdif2mc"
      },
      "operationOwners": [
        {
          "key": "notifications:getInboxSession",
          "slug": "/api/notifications/get-inbox-session",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getInboxSession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "token",
          "description": "Token issued for the subscriber’s inbox session.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "socketUrl",
          "description": "WebSocket endpoint provided for the inbox session.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "expiresIn",
          "description": "Remaining lifetime of the inbox session token, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetInboxUnseenCountResponse",
      "title": "GetInboxUnseenCountResponse",
      "slug": "/api/models/schema-ojl1escnb1",
      "description": "Result payload for counting unseen inbox notifications in selected feeds.",
      "semantics": "Result payload for counting unseen inbox notifications in selected feeds.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetInboxUnseenCountResponse",
        "slug": "/api/models/schema-ojl1escnb1"
      },
      "operationOwners": [
        {
          "key": "notifications:getInboxUnseenCount",
          "slug": "/api/notifications/get-inbox-unseen-count",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getInboxUnseenCount"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "unseenCount",
          "description": "Number of inbox messages reported unseen, capped at 10. Check has\\_more\\_unseen before treating this count as an exact total.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "unreadCount",
          "description": "Number of inbox messages reported unread, capped at 10. Check has\\_more\\_unread before treating this count as an exact total.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hasMoreUnseen",
          "description": "Whether unseen messages exceed the capped count. When true, a badge can display \"9+\".",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hasMoreUnread",
          "description": "Whether unread messages exceed the capped count. When true, a badge can display \"9+\".",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetNotificationActivityResponse",
      "title": "GetNotificationActivityResponse",
      "slug": "/api/models/schema-ojnqno81et",
      "description": "Result payload for querying delivery activity for a user across a selected time range.",
      "semantics": "Result payload for querying delivery activity for a user across a selected time range.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetNotificationActivityResponse",
        "slug": "/api/models/schema-ojnqno81et"
      },
      "operationOwners": [
        {
          "key": "notifications:getNotificationActivity",
          "slug": "/api/notifications/get-notification-activity",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getNotificationActivity"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "entries",
          "description": "Notification delivery activity entries returned for the selected query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hasMore",
          "description": "Whether the listing reports additional entries beyond this page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetPendingChangesResponse",
      "title": "GetPendingChangesResponse",
      "slug": "/api/models/schema-p1ujcu9541",
      "description": "Result payload for listing notification configuration changes awaiting promotion.",
      "semantics": "Result payload for listing notification configuration changes awaiting promotion.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetPendingChangesResponse",
        "slug": "/api/models/schema-p1ujcu9541"
      },
      "operationOwners": [
        {
          "key": "notifications:getPendingChanges",
          "slug": "/api/notifications/get-pending-changes",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getPendingChanges"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "changes",
          "description": "Pending notification configuration changes returned by the provider.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Total number of matching entries reported by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetPreferencesResponse",
      "title": "GetPreferencesResponse",
      "slug": "/api/models/schema-pcn59mpeit",
      "description": "Result payload for reading global and workflow-specific channel preferences for a subscriber.",
      "semantics": "Result payload for reading global and workflow-specific channel preferences for a subscriber.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetPreferencesResponse",
        "slug": "/api/models/schema-pcn59mpeit"
      },
      "operationOwners": [
        {
          "key": "notifications:getPreferences",
          "slug": "/api/notifications/get-preferences",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getPreferences"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "global",
          "description": "Subscriber preferences that apply across notification workflows.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "workflows",
          "description": "Subscriber channel preferences for individual notification workflows.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetProvidersResponse",
      "title": "GetProvidersResponse",
      "slug": "/api/models/schema-pcpncbnbli",
      "description": "Result payload for reading the configured notification delivery providers.",
      "semantics": "Result payload for reading the configured notification delivery providers.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetProvidersResponse",
        "slug": "/api/models/schema-pcpncbnbli"
      },
      "operationOwners": [
        {
          "key": "notifications:getProviders",
          "slug": "/api/notifications/get-providers",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getProviders"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "providers",
          "description": "Configured notification delivery providers.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetRegisteredChannelsResponse",
      "title": "GetRegisteredChannelsResponse",
      "slug": "/api/models/schema-pcrqsu00jc",
      "description": "Result payload for reading the notification channels with registered delivery credentials.",
      "semantics": "Result payload for reading the notification channels with registered delivery credentials.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetRegisteredChannelsResponse",
        "slug": "/api/models/schema-pcrqsu00jc"
      },
      "operationOwners": [
        {
          "key": "notifications:getRegisteredChannels",
          "slug": "/api/notifications/get-registered-channels",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getRegisteredChannels"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "channels",
          "description": "Registration status and credential counts for the subscriber’s delivery channels.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetSubscriberResponse",
      "title": "GetSubscriberResponse",
      "slug": "/api/models/schema-pctgv9au7v",
      "description": "Result payload for retrieving a notification subscriber’s contact and custom attributes.",
      "semantics": "Result payload for retrieving a notification subscriber’s contact and custom attributes.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetSubscriberResponse",
        "slug": "/api/models/schema-pctgv9au7v"
      },
      "operationOwners": [
        {
          "key": "notifications:getSubscriber",
          "slug": "/api/notifications/get-subscriber",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getSubscriber"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "subscriberId",
          "description": "Identifier of the notification subscriber.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "data",
          "description": "Contact, locale, and custom attributes returned for the subscriber.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "channels",
          "description": "Registration status and credential counts for the subscriber’s delivery channels.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "globalPreferences",
          "description": "Subscriber preferences that apply across notification workflows.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "workflowPreferences",
          "description": "Subscriber preferences scoped to individual notification workflows.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GetWorkflowResponse",
      "title": "GetWorkflowResponse",
      "slug": "/api/models/schema-ojpuj9ohnr",
      "description": "Result payload for retrieving a notification workflow by identifier or trigger name.",
      "semantics": "Result payload for retrieving a notification workflow by identifier or trigger name.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetWorkflowResponse",
        "slug": "/api/models/schema-ojpuj9ohnr"
      },
      "operationOwners": [
        {
          "key": "notifications:getWorkflow",
          "slug": "/api/notifications/get-workflow",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:getWorkflow"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflow",
          "description": "Notification workflow definition supplied to or returned by the provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_GlobalPreferences",
      "title": "GlobalPreferences",
      "slug": "/api/models/schema-p20l2ff92r",
      "description": "Subscriber's global (all-workflow) notification preferences.",
      "semantics": "Subscriber's global (all-workflow) notification preferences.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "GlobalPreferences",
        "slug": "/api/models/schema-p20l2ff92r"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:getPreferences",
        "notifications:getSubscriber"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "enabled",
          "description": "Master switch — false disables all non-critical notifications.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "channels",
          "description": "Channel switches recorded for these subscriber preferences.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_InboxFeedFilter",
      "title": "InboxFeedFilter",
      "slug": "/api/models/schema-ojrenemkui",
      "description": "Read-state, category, tag, and archive criteria selecting inbox entries.",
      "semantics": "Read-state, category, tag, and archive criteria selecting inbox entries.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "InboxFeedFilter",
        "slug": "/api/models/schema-ojrenemkui"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:getInboxFeed"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "unseenOnly",
          "description": "Whether the inbox filter selects only unseen messages.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "unreadOnly",
          "description": "Whether the inbox filter selects only unread messages.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "feedIds",
          "description": "Filter by Novu feed identifiers.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "categories",
          "description": "Categories used to select inbox messages.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Filter by workflow tags (OR logic per Novu semantics).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "archived",
          "description": "When true, include archived messages. False or omission selects the live inbox and excludes archived messages.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_InboxMessage",
      "title": "InboxMessage",
      "slug": "/api/models/schema-1kescd68ar",
      "description": "Notification content and interaction state displayed in a subscriber’s inbox.",
      "semantics": "Notification content and interaction state displayed in a subscriber’s inbox.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "InboxMessage",
        "slug": "/api/models/schema-1kescd68ar"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:getInboxFeed"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "messageId",
          "description": "Identifier of the message represented by this inbox entry.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "notificationId",
          "description": "Identifier of the notification represented by this inbox entry.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "title",
          "description": "Title displayed for the inbox notification.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "body",
          "description": "Body text of the inbox message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "data",
          "description": "Additional key-value attributes attached to the inbox notification.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "deepLink",
          "description": "Application deep link associated with the inbox message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "imageUrl",
          "description": "Image URL associated with the inbox message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Read, seen, or archived state recorded for the inbox message.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "category",
          "description": "Category assigned to the inbox message or workflow.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "seenAt",
          "description": "Time when the inbox message was marked seen.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "readAt",
          "description": "Time when the inbox message was marked read.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "actions",
          "description": "Interactive actions attached to the inbox message.\n\nCTA buttons",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Workflow tags for tab assignment (OR-filtered in feed).",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "archived",
          "description": "Whether this inbox notification is archived.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "archivedAt",
          "description": "Time when the inbox message was archived.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_InboxMessageAction",
      "title": "InboxMessageAction",
      "slug": "/api/models/schema-1kcu6c9rot",
      "description": "Interactive action attached to an inbox message, including completion state.",
      "semantics": "Interactive action attached to an inbox message, including completion state.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "InboxMessageAction",
        "slug": "/api/models/schema-1kcu6c9rot"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:getInboxFeed"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "actionId",
          "description": "Identifier of an action attached to the inbox message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "label",
          "description": "Display label for the inbox action.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "url",
          "description": "Destination URL opened by this inbox action.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isPrimary",
          "description": "Whether the inbox action is designated as the primary action.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completed",
          "description": "Whether the user has completed this action via CompleteInboxAction.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completedAt",
          "description": "Time when this inbox action was marked complete.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_InboxMessageSummary",
      "title": "InboxMessageSummary",
      "slug": "/api/models/schema-ojt6e86adl",
      "description": "Summary of an inbox message after a mark operation.",
      "semantics": "Summary of an inbox message after a mark operation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "InboxMessageSummary",
        "slug": "/api/models/schema-ojt6e86adl"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:markInboxMessageAs"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "messageId",
          "description": "Identifier of the inbox message represented by this summary.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "channel",
          "description": "Delivery channel reported for this inbox message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "read",
          "description": "Whether the inbox message has been marked read.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "seen",
          "description": "Whether the inbox message has been marked seen.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "archived",
          "description": "Whether this inbox message is archived.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Rendered notification content.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "subject",
          "description": "Subject text for the notification message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastReadDate",
          "description": "Most recent timestamp recorded for reading inbox messages.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastSeenDate",
          "description": "Most recent timestamp recorded for seeing inbox messages.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ListSubscribersResponse",
      "title": "ListSubscribersResponse",
      "slug": "/api/models/schema-p22mdqbbas",
      "description": "Result payload for paging through notification subscribers and their presence summaries.",
      "semantics": "Result payload for paging through notification subscribers and their presence summaries.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListSubscribersResponse",
        "slug": "/api/models/schema-p22mdqbbas"
      },
      "operationOwners": [
        {
          "key": "notifications:listSubscribers",
          "slug": "/api/notifications/list-subscribers",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:listSubscribers"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "subscribers",
          "description": "Subscriber records returned by the listing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Total number of matching entries reported by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hasMore",
          "description": "Whether the listing reports additional entries beyond this page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ListTopicSubscribersResponse",
      "title": "ListTopicSubscribersResponse",
      "slug": "/api/models/schema-ojvcd1skgn",
      "description": "Result payload for paging through members of a selected notification topic.",
      "semantics": "Result payload for paging through members of a selected notification topic.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListTopicSubscribersResponse",
        "slug": "/api/models/schema-ojvcd1skgn"
      },
      "operationOwners": [
        {
          "key": "notifications:listTopicSubscribers",
          "slug": "/api/notifications/list-topic-subscribers",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:listTopicSubscribers"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "userIds",
          "description": "Identifiers of the users selected by the operation.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Total number of matching entries reported by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hasMore",
          "description": "Whether the listing reports additional entries beyond this page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ListWorkflowsResponse",
      "title": "ListWorkflowsResponse",
      "slug": "/api/models/schema-ok1f23rb0f",
      "description": "Result payload for paging through available notification workflow definitions.",
      "semantics": "Result payload for paging through available notification workflow definitions.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListWorkflowsResponse",
        "slug": "/api/models/schema-ok1f23rb0f"
      },
      "operationOwners": [
        {
          "key": "notifications:listWorkflows",
          "slug": "/api/notifications/list-workflows",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:listWorkflows"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflows",
          "description": "Notification workflow definitions returned by the listing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Total number of matching entries reported by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "hasMore",
          "description": "Whether the listing reports additional entries beyond this page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_MarkAllInboxMessagesAsResponse",
      "title": "MarkAllInboxMessagesAsResponse",
      "slug": "/api/models/schema-ok29ctnufc",
      "description": "Result payload for changing the read or seen state of selected inbox messages.",
      "semantics": "Result payload for changing the read or seen state of selected inbox messages.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MarkAllInboxMessagesAsResponse",
        "slug": "/api/models/schema-ok29ctnufc"
      },
      "operationOwners": [
        {
          "key": "notifications:markAllInboxMessagesAs",
          "slug": "/api/notifications/mark-all-inbox-messages-as",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:markAllInboxMessagesAs"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "updatedCount",
          "description": "Number of inbox messages reported updated.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_MarkInboxMessageAsResponse",
      "title": "MarkInboxMessageAsResponse",
      "slug": "/api/models/schema-p24ksnp3j4",
      "description": "Result payload for changing an inbox message’s read or seen state.",
      "semantics": "Result payload for changing an inbox message’s read or seen state.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MarkInboxMessageAsResponse",
        "slug": "/api/models/schema-p24ksnp3j4"
      },
      "operationOwners": [
        {
          "key": "notifications:markInboxMessageAs",
          "slug": "/api/notifications/mark-inbox-message-as",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:markInboxMessageAs"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "messages",
          "description": "Inbox messages returned after applying the requested read or seen state change.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_OperationStatus",
      "title": "OperationStatus",
      "slug": "/api/models/schema-ok4lj6t1ka",
      "description": "Mirrors Novu's common delete/mutate acknowledgement response.",
      "semantics": "Mirrors Novu's common delete/mutate acknowledgement response.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "OperationStatus",
        "slug": "/api/models/schema-ok4lj6t1ka"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:archiveInboxMessage",
        "notifications:completeInboxAction",
        "notifications:deleteInboxMessage",
        "notifications:deleteSubscriber",
        "notifications:deleteTopic",
        "notifications:revertInboxAction",
        "notifications:unarchiveInboxMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "acknowledged",
          "description": "Whether the provider acknowledged the requested operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Status reported by the notification provider.\n\ne.g., \"done\", \"deleted\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_PendingChange",
      "title": "PendingChange",
      "slug": "/api/models/schema-ok6l245g8f",
      "description": "Notification configuration change awaiting promotion to another provider environment.",
      "semantics": "Notification configuration change awaiting promotion to another provider environment.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PendingChange",
        "slug": "/api/models/schema-ok6l245g8f"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:getPendingChanges"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "changeId",
          "description": "Identifier of a pending notification configuration change.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "type",
          "description": "Kind of notification resource affected by the pending configuration change.\n\n\"NotificationTemplate\", \"MessageTemplate\", etc.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "entityName",
          "description": "Name of the notification resource affected by the pending change.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "entityId",
          "description": "Identifier of the notification resource affected by the pending change.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time when this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdBy",
          "description": "Identifier of the actor that created the pending change.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_PromoteAllChangesResponse",
      "title": "PromoteAllChangesResponse",
      "slug": "/api/models/schema-p26ctddpem",
      "description": "Result payload for promoting selected notification configuration changes between provider environments.",
      "semantics": "Result payload for promoting selected notification configuration changes between provider environments.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PromoteAllChangesResponse",
        "slug": "/api/models/schema-p26ctddpem"
      },
      "operationOwners": [
        {
          "key": "notifications:promoteAllChanges",
          "slug": "/api/notifications/promote-all-changes",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:promoteAllChanges"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "promotedCount",
          "description": "Number of configuration changes reported promoted.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "promotedIds",
          "description": "Identifiers of configuration changes reported promoted.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "errors",
          "description": "Errors reported while processing notification requests.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_PromoteChangeResponse",
      "title": "PromoteChangeResponse",
      "slug": "/api/models/schema-ok87kevkm1",
      "description": "Result payload for promoting a notification configuration change between provider environments.",
      "semantics": "Result payload for promoting a notification configuration change between provider environments.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PromoteChangeResponse",
        "slug": "/api/models/schema-ok87kevkm1"
      },
      "operationOwners": [
        {
          "key": "notifications:promoteChange",
          "slug": "/api/notifications/promote-change",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:promoteChange"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "success",
          "description": "Whether the operation reports a successful result.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "productionEntityId",
          "description": "Identifier assigned to the promoted resource in the target environment.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_PromotionError",
      "title": "PromotionError",
      "slug": "/api/models/schema-okaelqap4k",
      "description": "Failure associated with promotion of one notification configuration change.",
      "semantics": "Failure associated with promotion of one notification configuration change.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "PromotionError",
        "slug": "/api/models/schema-okaelqap4k"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:promoteAllChanges"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "changeId",
          "description": "Identifier of a pending notification configuration change.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Error information reported for this operation or item.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_ProviderInfo",
      "title": "ProviderInfo",
      "slug": "/api/models/schema-p28bvfiqrb",
      "description": "Configured notification provider and its integration identifier and active state.",
      "semantics": "Configured notification provider and its integration identifier and active state.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ProviderInfo",
        "slug": "/api/models/schema-p28bvfiqrb"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:getProviders"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "provider",
          "description": "Notification delivery provider being configured or reported.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "integrationId",
          "description": "Identifier of the provider integration in Novu.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "active",
          "description": "Whether the resource is marked active.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_RegisterPushDeviceResponse",
      "title": "RegisterPushDeviceResponse",
      "slug": "/api/models/schema-okc6o9o3ul",
      "description": "Result payload for registering an FCM token as a user’s push notification delivery target.",
      "semantics": "Result payload for registering an FCM token as a user’s push notification delivery target.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RegisterPushDeviceResponse",
        "slug": "/api/models/schema-okc6o9o3ul"
      },
      "operationOwners": [
        {
          "key": "notifications:registerPushDevice",
          "slug": "/api/notifications/register-push-device",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:registerPushDevice"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "success",
          "description": "Whether the operation reports a successful result.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "subscriberId",
          "description": "Identifier of the notification subscriber.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_RemoveSubscribersFromTopicResponse",
      "title": "RemoveSubscribersFromTopicResponse",
      "slug": "/api/models/schema-pcvdal73iv",
      "description": "Result payload for removing selected users from a notification topic’s recipient membership.",
      "semantics": "Result payload for removing selected users from a notification topic’s recipient membership.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RemoveSubscribersFromTopicResponse",
        "slug": "/api/models/schema-pcvdal73iv"
      },
      "operationOwners": [
        {
          "key": "notifications:removeSubscribersFromTopic",
          "slug": "/api/notifications/remove-subscribers-from-topic",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:removeSubscribersFromTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "result",
          "description": "Accepted and failed subscriber counts with per-subscriber errors from the membership change.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_RevertInboxActionResponse",
      "title": "RevertInboxActionResponse",
      "slug": "/api/models/schema-p2at2fs3la",
      "description": "Result payload for undoing completion of an inbox notification’s action.",
      "semantics": "Result payload for undoing completion of an inbox notification’s action.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RevertInboxActionResponse",
        "slug": "/api/models/schema-p2at2fs3la"
      },
      "operationOwners": [
        {
          "key": "notifications:revertInboxAction",
          "slug": "/api/notifications/revert-inbox-action",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:revertInboxAction"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_SendBulkNotificationResponse",
      "title": "SendBulkNotificationResponse",
      "slug": "/api/models/schema-p2c969iaho",
      "description": "Result payload for triggering multiple notification workflow events together.",
      "semantics": "Result payload for triggering multiple notification workflow events together.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendBulkNotificationResponse",
        "slug": "/api/models/schema-p2c969iaho"
      },
      "operationOwners": [
        {
          "key": "notifications:sendBulkNotification",
          "slug": "/api/notifications/send-bulk-notification",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:sendBulkNotification"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "results",
          "description": "Provider acknowledgements and errors for the submitted notification triggers.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_SendNotificationResponse",
      "title": "SendNotificationResponse",
      "slug": "/api/models/schema-okeogps85h",
      "description": "Result payload for triggering a notification workflow for a selected user.",
      "semantics": "Result payload for triggering a notification workflow for a selected user.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendNotificationResponse",
        "slug": "/api/models/schema-okeogps85h"
      },
      "operationOwners": [
        {
          "key": "notifications:sendNotification",
          "slug": "/api/notifications/send-notification",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:sendNotification"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "acknowledged",
          "description": "Whether the notification provider acknowledged the trigger.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Descriptive status reported by the notification provider, not a fixed set of states. \"processed\" means the workflow was accepted for processing; it does not confirm delivery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "errors",
          "description": "Errors reported while processing notification requests.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_SendToTopicResponse",
      "title": "SendToTopicResponse",
      "slug": "/api/models/schema-okgl4i1omh",
      "description": "Result payload for triggering a notification workflow for the subscribers of a topic.",
      "semantics": "Result payload for triggering a notification workflow for the subscribers of a topic.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendToTopicResponse",
        "slug": "/api/models/schema-okgl4i1omh"
      },
      "operationOwners": [
        {
          "key": "notifications:sendToTopic",
          "slug": "/api/notifications/send-to-topic",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:sendToTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "acknowledged",
          "description": "Whether the notification provider acknowledged the trigger.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "errors",
          "description": "Errors reported while processing notification requests.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_SendWithDigestResponse",
      "title": "SendWithDigestResponse",
      "slug": "/api/models/schema-okih4bo8te",
      "description": "Result payload for submitting a notification event for digest processing.",
      "semantics": "Result payload for submitting a notification event for digest processing.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendWithDigestResponse",
        "slug": "/api/models/schema-okih4bo8te"
      },
      "operationOwners": [
        {
          "key": "notifications:sendWithDigest",
          "slug": "/api/notifications/send-with-digest",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:sendWithDigest"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "acknowledged",
          "description": "Whether the notification provider acknowledged the trigger.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "errors",
          "description": "Errors reported while processing notification requests.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_AddSubscribersToTopicRequest",
      "title": "AddSubscribersToTopicRequest",
      "slug": "/api/models/schema-okr7ufdm8k",
      "description": "Inputs for adding selected users to a notification topic’s recipient membership.",
      "semantics": "Inputs for adding selected users to a notification topic’s recipient membership.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "AddSubscribersToTopicRequest",
        "slug": "/api/models/schema-okr7ufdm8k"
      },
      "operationOwners": [
        {
          "key": "notifications:addSubscribersToTopic",
          "slug": "/api/notifications/add-subscribers-to-topic",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:addSubscribersToTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "topicKey",
          "description": "Caller-facing key identifying a notification topic.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "userIds",
          "description": "Identifiers of the users selected by the operation.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_ArchiveAllInboxMessagesRequest",
      "title": "ArchiveAllInboxMessagesRequest",
      "slug": "/api/models/schema-oktkdabfh5",
      "description": "Inputs for archiving inbox notifications selected by the supplied tag filter.",
      "semantics": "Inputs for archiving inbox notifications selected by the supplied tag filter.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ArchiveAllInboxMessagesRequest",
        "slug": "/api/models/schema-oktkdabfh5"
      },
      "operationOwners": [
        {
          "key": "notifications:archiveAllInboxMessages",
          "slug": "/api/notifications/archive-all-inbox-messages",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:archiveAllInboxMessages"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "tags",
          "description": "Labels associated with the resource for organization or filtering.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_ArchiveAllReadInboxMessagesRequest",
      "title": "ArchiveAllReadInboxMessagesRequest",
      "slug": "/api/models/schema-okv7udepf2",
      "description": "Inputs for archiving read inbox notifications selected by the supplied tag filter.",
      "semantics": "Inputs for archiving read inbox notifications selected by the supplied tag filter.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ArchiveAllReadInboxMessagesRequest",
        "slug": "/api/models/schema-okv7udepf2"
      },
      "operationOwners": [
        {
          "key": "notifications:archiveAllReadInboxMessages",
          "slug": "/api/notifications/archive-all-read-inbox-messages",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:archiveAllReadInboxMessages"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "tags",
          "description": "Labels associated with the resource for organization or filtering.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_ArchiveInboxMessageRequest",
      "title": "ArchiveInboxMessageRequest",
      "slug": "/api/models/schema-ol1rjl890b",
      "description": "Inputs for archiving an inbox notification. Caller user\\_id is derived from authentication headers by the gateway.",
      "semantics": "Inputs for archiving an inbox notification. Caller user\\_id is derived from authentication headers by the gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ArchiveInboxMessageRequest",
        "slug": "/api/models/schema-ol1rjl890b"
      },
      "operationOwners": [
        {
          "key": "notifications:archiveInboxMessage",
          "slug": "/api/notifications/archive-inbox-message",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:archiveInboxMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "notificationId",
          "description": "Identifier of the notification whose inbox entry is being modified.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_BulkUpdatePreferencesRequest",
      "title": "BulkUpdatePreferencesRequest",
      "slug": "/api/models/schema-pd12j7lcej",
      "description": "Inputs for applying channel-preference changes across selected notification workflows.",
      "semantics": "Inputs for applying channel-preference changes across selected notification workflows.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "BulkUpdatePreferencesRequest",
        "slug": "/api/models/schema-pd12j7lcej"
      },
      "operationOwners": [
        {
          "key": "notifications:bulkUpdatePreferences",
          "slug": "/api/notifications/bulk-update-preferences",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:bulkUpdatePreferences"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "entries",
          "description": "Workflow-specific preference updates submitted together.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_CancelDigestEventRequest",
      "title": "CancelDigestEventRequest",
      "slug": "/api/models/schema-ol3lbfli7i",
      "description": "Inputs for cancelling a queued notification digest event.",
      "semantics": "Inputs for cancelling a queued notification digest event.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CancelDigestEventRequest",
        "slug": "/api/models/schema-ol3lbfli7i"
      },
      "operationOwners": [
        {
          "key": "notifications:cancelDigestEvent",
          "slug": "/api/notifications/cancel-digest-event",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:cancelDigestEvent"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_CancelNotificationRequest",
      "title": "CancelNotificationRequest",
      "slug": "/api/models/schema-ol5d4iig1p",
      "description": "Inputs for cancelling a pending notification by transaction identifier.",
      "semantics": "Inputs for cancelling a pending notification by transaction identifier.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CancelNotificationRequest",
        "slug": "/api/models/schema-ol5d4iig1p"
      },
      "operationOwners": [
        {
          "key": "notifications:cancelNotification",
          "slug": "/api/notifications/cancel-notification",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:cancelNotification"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_CheckTopicSubscriptionRequest",
      "title": "CheckTopicSubscriptionRequest",
      "slug": "/api/models/schema-ol7glsaihn",
      "description": "user\\_id is a query target, not the caller.",
      "semantics": "user\\_id is a query target, not the caller.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CheckTopicSubscriptionRequest",
        "slug": "/api/models/schema-ol7glsaihn"
      },
      "operationOwners": [
        {
          "key": "notifications:checkTopicSubscription",
          "slug": "/api/notifications/check-topic-subscription",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:checkTopicSubscription"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "topicKey",
          "description": "Caller-facing key identifying a notification topic.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "userId",
          "description": "Identifier of the user associated with the operation.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_CompleteInboxActionRequest",
      "title": "CompleteInboxActionRequest",
      "slug": "/api/models/schema-p2lcslk1m9",
      "description": "Inputs for marking an inbox notification’s action completed.",
      "semantics": "Inputs for marking an inbox notification’s action completed.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CompleteInboxActionRequest",
        "slug": "/api/models/schema-p2lcslk1m9"
      },
      "operationOwners": [
        {
          "key": "notifications:completeInboxAction",
          "slug": "/api/notifications/complete-inbox-action",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:completeInboxAction"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "notificationId",
          "description": "Identifier of the notification whose inbox entry is being modified.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "actionType",
          "description": "Action selector used when completing the inbox action.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_ConfigureProviderRequest",
      "title": "ConfigureProviderRequest",
      "slug": "/api/models/schema-p2ngpirjl6",
      "description": "Inputs for configuring a notification delivery provider. Tenant and environment are derived from authentication headers by the gateway.",
      "semantics": "Inputs for configuring a notification delivery provider. Tenant and environment are derived from authentication headers by the gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ConfigureProviderRequest",
        "slug": "/api/models/schema-p2ngpirjl6"
      },
      "operationOwners": [
        {
          "key": "notifications:configureProvider",
          "slug": "/api/notifications/configure-provider",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:configureProvider"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "provider",
          "description": "Notification delivery provider being configured or reported.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "credentials",
          "description": "Provider-specific credentials supplied when configuring delivery.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "active",
          "description": "Whether the resource is marked active.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_CreateSubscriberRequest",
      "title": "CreateSubscriberRequest",
      "slug": "/api/models/schema-ol9kcmtbcq",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "semantics": "tenant\\_id and environment derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateSubscriberRequest",
        "slug": "/api/models/schema-ol9kcmtbcq"
      },
      "operationOwners": [
        {
          "key": "notifications:createSubscriber",
          "slug": "/api/notifications/create-subscriber",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:createSubscriber"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "subscriberId",
          "description": "Identifier of the notification subscriber.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "email",
          "description": "Email address used for subscriber contact and delivery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "phone",
          "description": "Phone number used for subscriber contact and delivery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "firstName",
          "description": "Subscriber’s given name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastName",
          "description": "Subscriber’s family name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "avatarUrl",
          "description": "URL of the subscriber’s avatar image.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "locale",
          "description": "Subscriber locale used when rendering notifications.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "data",
          "description": "Custom key-value attributes to attach to the new subscriber.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_CreateTopicRequest",
      "title": "CreateTopicRequest",
      "slug": "/api/models/schema-olb565ld3o",
      "description": "Inputs for creating a named notification topic with a caller-selected key.",
      "semantics": "Inputs for creating a named notification topic with a caller-selected key.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateTopicRequest",
        "slug": "/api/models/schema-olb565ld3o"
      },
      "operationOwners": [
        {
          "key": "notifications:createTopic",
          "slug": "/api/notifications/create-topic",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:createTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "topicKey",
          "description": "Caller-facing key identifying a notification topic.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "name",
          "description": "Display name assigned to the notification topic.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_CreateWorkflowRequest",
      "title": "CreateWorkflowRequest",
      "slug": "/api/models/schema-olde4dsvl0",
      "description": "Inputs for creating a notification workflow. Tenant and environment are derived from authentication headers by the gateway.",
      "semantics": "Inputs for creating a notification workflow. Tenant and environment are derived from authentication headers by the gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateWorkflowRequest",
        "slug": "/api/models/schema-olde4dsvl0"
      },
      "operationOwners": [
        {
          "key": "notifications:createWorkflow",
          "slug": "/api/notifications/create-workflow",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:createWorkflow"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflow",
          "description": "Notification workflow definition to create.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_DeleteInboxMessageRequest",
      "title": "DeleteInboxMessageRequest",
      "slug": "/api/models/schema-oletageabv",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "semantics": "Caller user\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteInboxMessageRequest",
        "slug": "/api/models/schema-oletageabv"
      },
      "operationOwners": [
        {
          "key": "notifications:deleteInboxMessage",
          "slug": "/api/notifications/delete-inbox-message",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:deleteInboxMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "messageId",
          "description": "Identifier of the inbox message to delete.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_DeleteSubscriberRequest",
      "title": "DeleteSubscriberRequest",
      "slug": "/api/models/schema-olghqmp78p",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "semantics": "Caller user\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteSubscriberRequest",
        "slug": "/api/models/schema-olghqmp78p"
      },
      "operationOwners": [
        {
          "key": "notifications:deleteSubscriber",
          "slug": "/api/notifications/delete-subscriber",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:deleteSubscriber"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_DeleteTopicRequest",
      "title": "DeleteTopicRequest",
      "slug": "/api/models/schema-oliq2erk06",
      "description": "Inputs for removing an identified notification topic.",
      "semantics": "Inputs for removing an identified notification topic.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteTopicRequest",
        "slug": "/api/models/schema-oliq2erk06"
      },
      "operationOwners": [
        {
          "key": "notifications:deleteTopic",
          "slug": "/api/notifications/delete-topic",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:deleteTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "topicKey",
          "description": "Caller-facing key identifying a notification topic.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_DeleteWorkflowRequest",
      "title": "DeleteWorkflowRequest",
      "slug": "/api/models/schema-olkrusef5u",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "semantics": "tenant\\_id and environment derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteWorkflowRequest",
        "slug": "/api/models/schema-olkrusef5u"
      },
      "operationOwners": [
        {
          "key": "notifications:deleteWorkflow",
          "slug": "/api/notifications/delete-workflow",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:deleteWorkflow"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Identifier of the notification workflow selected for deletion.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "triggerIdentifier",
          "description": "Trigger identifier used to address a notification workflow.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetDeliveryStatusRequest",
      "title": "GetDeliveryStatusRequest",
      "slug": "/api/models/schema-olmqi9je3j",
      "description": "Inputs for reading provider activity for a notification transaction.",
      "semantics": "Inputs for reading provider activity for a notification transaction.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetDeliveryStatusRequest",
        "slug": "/api/models/schema-olmqi9je3j"
      },
      "operationOwners": [
        {
          "key": "notifications:getDeliveryStatus",
          "slug": "/api/notifications/get-delivery-status",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getDeliveryStatus"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetInboxFeedRequest",
      "title": "GetInboxFeedRequest",
      "slug": "/api/models/schema-p2pssk3d33",
      "description": "Inputs for reading the caller’s notification inbox feed. Caller user\\_id is derived from authentication headers by the gateway.",
      "semantics": "Inputs for reading the caller’s notification inbox feed. Caller user\\_id is derived from authentication headers by the gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetInboxFeedRequest",
        "slug": "/api/models/schema-p2pssk3d33"
      },
      "operationOwners": [
        {
          "key": "notifications:getInboxFeed",
          "slug": "/api/notifications/get-inbox-feed",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getInboxFeed"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "page",
          "description": "Page number used by this listing operation, starting at 1.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "filter",
          "description": "Selection criteria applied to the listing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetInboxSessionRequest",
      "title": "GetInboxSessionRequest",
      "slug": "/api/models/schema-olo0jcvf3g",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "semantics": "Caller user\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetInboxSessionRequest",
        "slug": "/api/models/schema-olo0jcvf3g"
      },
      "operationOwners": [
        {
          "key": "notifications:getInboxSession",
          "slug": "/api/notifications/get-inbox-session",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getInboxSession"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetInboxUnseenCountRequest",
      "title": "GetInboxUnseenCountRequest",
      "slug": "/api/models/schema-olqeqiji0a",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "semantics": "Caller user\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetInboxUnseenCountRequest",
        "slug": "/api/models/schema-olqeqiji0a"
      },
      "operationOwners": [
        {
          "key": "notifications:getInboxUnseenCount",
          "slug": "/api/notifications/get-inbox-unseen-count",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getInboxUnseenCount"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "feedIds",
          "description": "Feed identifiers used to select inbox messages.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetNotificationActivityRequest",
      "title": "GetNotificationActivityRequest",
      "slug": "/api/models/schema-olsl4fd3qj",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "semantics": "Caller user\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetNotificationActivityRequest",
        "slug": "/api/models/schema-olsl4fd3qj"
      },
      "operationOwners": [
        {
          "key": "notifications:getNotificationActivity",
          "slug": "/api/notifications/get-notification-activity",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getNotificationActivity"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "page",
          "description": "Page number used by this listing operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "channels",
          "description": "Provider delivery-channel names used to restrict the query, such as \"in\\_app\" and \"push\". These are provider strings, not CHANNEL\\_\\* enum names.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "from",
          "description": "Lower time bound for the notification activity query.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "to",
          "description": "Upper time bound for the notification activity query.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "subscriberIds",
          "description": "When supplied, restrict notification activity to these subscriber identifiers.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetPendingChangesRequest",
      "title": "GetPendingChangesRequest",
      "slug": "/api/models/schema-oludf2a1u4",
      "description": "Request for pending notification configuration changes. Tenant identity is derived from authentication headers by the gateway.",
      "semantics": "Request for pending notification configuration changes. Tenant identity is derived from authentication headers by the gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetPendingChangesRequest",
        "slug": "/api/models/schema-oludf2a1u4"
      },
      "operationOwners": [
        {
          "key": "notifications:getPendingChanges",
          "slug": "/api/notifications/get-pending-changes",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getPendingChanges"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetPreferencesRequest",
      "title": "GetPreferencesRequest",
      "slug": "/api/models/schema-om0ph2mkhp",
      "description": "Request for the caller’s hierarchical notification preferences. Caller user\\_id is derived from authentication headers by the gateway.",
      "semantics": "Request for the caller’s hierarchical notification preferences. Caller user\\_id is derived from authentication headers by the gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetPreferencesRequest",
        "slug": "/api/models/schema-om0ph2mkhp"
      },
      "operationOwners": [
        {
          "key": "notifications:getPreferences",
          "slug": "/api/notifications/get-preferences",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getPreferences"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetProvidersRequest",
      "title": "GetProvidersRequest",
      "slug": "/api/models/schema-om2rcgrl90",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "semantics": "tenant\\_id and environment derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetProvidersRequest",
        "slug": "/api/models/schema-om2rcgrl90"
      },
      "operationOwners": [
        {
          "key": "notifications:getProviders",
          "slug": "/api/notifications/get-providers",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getProviders"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetRegisteredChannelsRequest",
      "title": "GetRegisteredChannelsRequest",
      "slug": "/api/models/schema-om33g6hvl1",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "semantics": "Caller user\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetRegisteredChannelsRequest",
        "slug": "/api/models/schema-om33g6hvl1"
      },
      "operationOwners": [
        {
          "key": "notifications:getRegisteredChannels",
          "slug": "/api/notifications/get-registered-channels",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getRegisteredChannels"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetSubscriberRequest",
      "title": "GetSubscriberRequest",
      "slug": "/api/models/schema-om5jvkc4ft",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "semantics": "Caller user\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetSubscriberRequest",
        "slug": "/api/models/schema-om5jvkc4ft"
      },
      "operationOwners": [
        {
          "key": "notifications:getSubscriber",
          "slug": "/api/notifications/get-subscriber",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getSubscriber"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_GetWorkflowRequest",
      "title": "GetWorkflowRequest",
      "slug": "/api/models/schema-om7j247f8c",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "semantics": "tenant\\_id and environment derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetWorkflowRequest",
        "slug": "/api/models/schema-om7j247f8c"
      },
      "operationOwners": [
        {
          "key": "notifications:getWorkflow",
          "slug": "/api/notifications/get-workflow",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:getWorkflow"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Identifier of the notification workflow to retrieve.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "triggerIdentifier",
          "description": "Trigger identifier used to address a notification workflow.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_ListSubscribersRequest",
      "title": "ListSubscribersRequest",
      "slug": "/api/models/schema-om99gc6u4g",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "semantics": "tenant\\_id and environment derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListSubscribersRequest",
        "slug": "/api/models/schema-om99gc6u4g"
      },
      "operationOwners": [
        {
          "key": "notifications:listSubscribers",
          "slug": "/api/notifications/list-subscribers",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:listSubscribers"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "page",
          "description": "Page number used by this listing operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_ListTopicSubscribersRequest",
      "title": "ListTopicSubscribersRequest",
      "slug": "/api/models/schema-ombon6jgfh",
      "description": "Inputs for paging through members of a selected notification topic.",
      "semantics": "Inputs for paging through members of a selected notification topic.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListTopicSubscribersRequest",
        "slug": "/api/models/schema-ombon6jgfh"
      },
      "operationOwners": [
        {
          "key": "notifications:listTopicSubscribers",
          "slug": "/api/notifications/list-topic-subscribers",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:listTopicSubscribers"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "topicKey",
          "description": "Caller-facing key identifying a notification topic.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "page",
          "description": "Page number used by this listing operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_ListWorkflowsRequest",
      "title": "ListWorkflowsRequest",
      "slug": "/api/models/schema-omdjfntaps",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "semantics": "tenant\\_id and environment derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListWorkflowsRequest",
        "slug": "/api/models/schema-omdjfntaps"
      },
      "operationOwners": [
        {
          "key": "notifications:listWorkflows",
          "slug": "/api/notifications/list-workflows",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:listWorkflows"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "page",
          "description": "Page number used by this listing operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_MarkAllInboxMessagesAsRequest",
      "title": "MarkAllInboxMessagesAsRequest",
      "slug": "/api/models/schema-p2rd9oqvq9",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "semantics": "Caller user\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MarkAllInboxMessagesAsRequest",
        "slug": "/api/models/schema-p2rd9oqvq9"
      },
      "operationOwners": [
        {
          "key": "notifications:markAllInboxMessagesAs",
          "slug": "/api/notifications/mark-all-inbox-messages-as",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:markAllInboxMessagesAs"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "markAs",
          "description": "Read or seen state to apply to the selected inbox messages.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "feedIds",
          "description": "Feed identifiers used to select inbox messages.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_MarkInboxMessageAsRequest",
      "title": "MarkInboxMessageAsRequest",
      "slug": "/api/models/schema-p2td726rpp",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "semantics": "Caller user\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MarkInboxMessageAsRequest",
        "slug": "/api/models/schema-p2td726rpp"
      },
      "operationOwners": [
        {
          "key": "notifications:markInboxMessageAs",
          "slug": "/api/notifications/mark-inbox-message-as",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:markInboxMessageAs"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "messageId",
          "description": "Identifier of the inbox message whose state is being changed.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "markAs",
          "description": "Read or seen state to apply to the selected inbox message.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_PromoteAllChangesRequest",
      "title": "PromoteAllChangesRequest",
      "slug": "/api/models/schema-omf8u19a15",
      "description": "tenant\\_id derived from auth headers by gateway.",
      "semantics": "tenant\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PromoteAllChangesRequest",
        "slug": "/api/models/schema-omf8u19a15"
      },
      "operationOwners": [
        {
          "key": "notifications:promoteAllChanges",
          "slug": "/api/notifications/promote-all-changes",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:promoteAllChanges"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "changeIds",
          "description": "Identifiers of notification configuration changes selected for promotion.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_PromoteChangeRequest",
      "title": "PromoteChangeRequest",
      "slug": "/api/models/schema-omhh7hha9k",
      "description": "tenant\\_id derived from auth headers by gateway.",
      "semantics": "tenant\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PromoteChangeRequest",
        "slug": "/api/models/schema-omhh7hha9k"
      },
      "operationOwners": [
        {
          "key": "notifications:promoteChange",
          "slug": "/api/notifications/promote-change",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:promoteChange"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "changeId",
          "description": "Identifier of a pending notification configuration change.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_RegisterPushDeviceRequest",
      "title": "RegisterPushDeviceRequest",
      "slug": "/api/models/schema-p2vn6i6pvp",
      "description": "Inputs for registering a push-notification device. Caller user\\_id is derived from authentication headers by the gateway.",
      "semantics": "Inputs for registering a push-notification device. Caller user\\_id is derived from authentication headers by the gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RegisterPushDeviceRequest",
        "slug": "/api/models/schema-p2vn6i6pvp"
      },
      "operationOwners": [
        {
          "key": "notifications:registerPushDevice",
          "slug": "/api/notifications/register-push-device",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:registerPushDevice"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fcmToken",
          "description": "Firebase Cloud Messaging token identifying the push delivery target.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "platform",
          "description": "Device platform associated with the registered push token.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "deviceId",
          "description": "Client-provided identifier of the device being registered.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_RemoveSubscribersFromTopicRequest",
      "title": "RemoveSubscribersFromTopicRequest",
      "slug": "/api/models/schema-omjtrirjlf",
      "description": "Inputs for removing selected users from a notification topic’s recipient membership.",
      "semantics": "Inputs for removing selected users from a notification topic’s recipient membership.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RemoveSubscribersFromTopicRequest",
        "slug": "/api/models/schema-omjtrirjlf"
      },
      "operationOwners": [
        {
          "key": "notifications:removeSubscribersFromTopic",
          "slug": "/api/notifications/remove-subscribers-from-topic",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:removeSubscribersFromTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "topicKey",
          "description": "Caller-facing key identifying a notification topic.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "userIds",
          "description": "Identifiers of the users selected by the operation.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_RevertInboxActionRequest",
      "title": "RevertInboxActionRequest",
      "slug": "/api/models/schema-p31lksgkkh",
      "description": "Inputs for undoing completion of an inbox notification’s action.",
      "semantics": "Inputs for undoing completion of an inbox notification’s action.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RevertInboxActionRequest",
        "slug": "/api/models/schema-p31lksgkkh"
      },
      "operationOwners": [
        {
          "key": "notifications:revertInboxAction",
          "slug": "/api/notifications/revert-inbox-action",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:revertInboxAction"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "notificationId",
          "description": "Identifier of the notification whose inbox entry is being modified.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "actionType",
          "description": "Action selector used when reverting the inbox action.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_SendBulkNotificationRequest",
      "title": "SendBulkNotificationRequest",
      "slug": "/api/models/schema-p32ld7hgi8",
      "description": "events contain recipient user\\_ids, not the caller.",
      "semantics": "events contain recipient user\\_ids, not the caller.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendBulkNotificationRequest",
        "slug": "/api/models/schema-p32ld7hgi8"
      },
      "operationOwners": [
        {
          "key": "notifications:sendBulkNotification",
          "slug": "/api/notifications/send-bulk-notification",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:sendBulkNotification"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "events",
          "description": "Notification trigger events submitted together. Submit at most 100 events per batch.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_SendNotificationRequest",
      "title": "SendNotificationRequest",
      "slug": "/api/models/schema-omlsmp029j",
      "description": "Inputs for dispatching a notification. user\\_id identifies the recipient, not the caller.",
      "semantics": "Inputs for dispatching a notification. user\\_id identifies the recipient, not the caller.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendNotificationRequest",
        "slug": "/api/models/schema-omlsmp029j"
      },
      "operationOwners": [
        {
          "key": "notifications:sendNotification",
          "slug": "/api/notifications/send-notification",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:sendNotification"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Identifier of the notification workflow to trigger.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "userId",
          "description": "Identifier of the notification's intended recipient.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "payload",
          "description": "Template variables and event data passed to the notification workflow.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "overrides",
          "description": "Provider-specific overrides passed through to delivery, such as an FCM data payload.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_SendToTopicRequest",
      "title": "SendToTopicRequest",
      "slug": "/api/models/schema-ommcomcln6",
      "description": "exclude\\_user\\_id is an exclusion target, not the caller.",
      "semantics": "exclude\\_user\\_id is an exclusion target, not the caller.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendToTopicRequest",
        "slug": "/api/models/schema-ommcomcln6"
      },
      "operationOwners": [
        {
          "key": "notifications:sendToTopic",
          "slug": "/api/notifications/send-to-topic",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:sendToTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Identifier of the notification workflow to trigger.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "topicKey",
          "description": "Caller-facing key identifying a notification topic.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "payload",
          "description": "Template variables and event data passed to the notification workflow.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "overrides",
          "description": "Provider-specific overrides applied to the notification trigger.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "excludeUserId",
          "description": "User identifier to omit from the topic notification’s recipients.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_SendWithDigestRequest",
      "title": "SendWithDigestRequest",
      "slug": "/api/models/schema-ompeki5gnq",
      "description": "Inputs for dispatching a notification with digest handling. user\\_id identifies the recipient, not the caller.",
      "semantics": "Inputs for dispatching a notification with digest handling. user\\_id identifies the recipient, not the caller.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SendWithDigestRequest",
        "slug": "/api/models/schema-ompeki5gnq"
      },
      "operationOwners": [
        {
          "key": "notifications:sendWithDigest",
          "slug": "/api/notifications/send-with-digest",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:sendWithDigest"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Identifier of the notification workflow to trigger.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "userId",
          "description": "Identifier of the notification’s intended recipient.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "payload",
          "description": "Template variables and event data passed to the notification workflow.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "overrides",
          "description": "Provider-specific overrides applied to the notification trigger.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transactionId",
          "description": "Identifier correlating a notification trigger with later status or cancellation requests.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_UnarchiveInboxMessageRequest",
      "title": "UnarchiveInboxMessageRequest",
      "slug": "/api/models/schema-omrlqvfma1",
      "description": "Inputs for restoring an archived notification to the subscriber’s inbox feed.",
      "semantics": "Inputs for restoring an archived notification to the subscriber’s inbox feed.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UnarchiveInboxMessageRequest",
        "slug": "/api/models/schema-omrlqvfma1"
      },
      "operationOwners": [
        {
          "key": "notifications:unarchiveInboxMessage",
          "slug": "/api/notifications/unarchive-inbox-message",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:unarchiveInboxMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "notificationId",
          "description": "Identifier of the notification whose inbox entry is being modified.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_UnregisterPushDeviceRequest",
      "title": "UnregisterPushDeviceRequest",
      "slug": "/api/models/schema-omspru6b7c",
      "description": "Caller user\\_id derived from auth headers by gateway.",
      "semantics": "Caller user\\_id derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UnregisterPushDeviceRequest",
        "slug": "/api/models/schema-omspru6b7c"
      },
      "operationOwners": [
        {
          "key": "notifications:unregisterPushDevice",
          "slug": "/api/notifications/unregister-push-device",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:unregisterPushDevice"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fcmToken",
          "description": "Firebase Cloud Messaging token identifying the push delivery target.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_UpdateGlobalPreferenceRequest",
      "title": "UpdateGlobalPreferenceRequest",
      "slug": "/api/models/schema-p34ct37c2b",
      "description": "Inputs for changing the subscriber’s channel preferences across notification workflows.",
      "semantics": "Inputs for changing the subscriber’s channel preferences across notification workflows.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateGlobalPreferenceRequest",
        "slug": "/api/models/schema-p34ct37c2b"
      },
      "operationOwners": [
        {
          "key": "notifications:updateGlobalPreference",
          "slug": "/api/notifications/update-global-preference",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:updateGlobalPreference"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "channels",
          "description": "Channel switches to update for the subscriber.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_UpdateSubscriberDataRequest",
      "title": "UpdateSubscriberDataRequest",
      "slug": "/api/models/schema-p36r67qthn",
      "description": "Inputs for updating notification subscriber data. Caller user\\_id is derived from authentication headers by the gateway.",
      "semantics": "Inputs for updating notification subscriber data. Caller user\\_id is derived from authentication headers by the gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateSubscriberDataRequest",
        "slug": "/api/models/schema-p36r67qthn"
      },
      "operationOwners": [
        {
          "key": "notifications:updateSubscriberData",
          "slug": "/api/notifications/update-subscriber-data",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:updateSubscriberData"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "data",
          "description": "Contact, locale, and custom subscriber attributes to update.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_UpdateWorkflowPreferenceRequest",
      "title": "UpdateWorkflowPreferenceRequest",
      "slug": "/api/models/schema-p38aqgjs3a",
      "description": "Inputs for changing the subscriber’s channel preferences for one notification workflow.",
      "semantics": "Inputs for changing the subscriber’s channel preferences for one notification workflow.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "UpdateWorkflowPreferenceRequest",
        "slug": "/api/models/schema-p38aqgjs3a"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:bulkUpdatePreferences"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Identifier of the notification workflow whose subscriber preferences are being changed.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "channels",
          "description": "Channel switches to update for the subscriber.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_UpdateWorkflowPreferenceRequestRequest",
      "title": "UpdateWorkflowPreferenceRequest",
      "slug": "/api/models/schema-p38aqgjs3a-request",
      "description": "Inputs for changing the subscriber’s channel preferences for one notification workflow.",
      "semantics": "Inputs for changing the subscriber’s channel preferences for one notification workflow.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateWorkflowPreferenceRequest",
        "slug": "/api/models/schema-p38aqgjs3a"
      },
      "operationOwners": [
        {
          "key": "notifications:updateWorkflowPreference",
          "slug": "/api/notifications/update-workflow-preference",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:updateWorkflowPreference"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Identifier of the notification workflow whose subscriber preferences are being changed.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "channels",
          "description": "Channel switches to update for the subscriber.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_services_gateway_v1_UpdateWorkflowRequest",
      "title": "UpdateWorkflowRequest",
      "slug": "/api/models/schema-omu9h8mk4a",
      "description": "tenant\\_id and environment derived from auth headers by gateway.",
      "semantics": "tenant\\_id and environment derived from auth headers by gateway.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateWorkflowRequest",
        "slug": "/api/models/schema-omu9h8mk4a"
      },
      "operationOwners": [
        {
          "key": "notifications:updateWorkflow",
          "slug": "/api/notifications/update-workflow",
          "direction": "request"
        }
      ],
      "usedBy": [
        "notifications:updateWorkflow"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Identifier of the notification workflow to update.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "workflow",
          "description": "Notification workflow definition supplied to or returned by the provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_SubscriberData",
      "title": "SubscriberData",
      "slug": "/api/models/schema-1kgdnn5p53",
      "description": "Contact, locale, and custom attributes used by notification delivery.",
      "semantics": "Contact, locale, and custom attributes used by notification delivery.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SubscriberData",
        "slug": "/api/models/schema-1kgdnn5p53"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:getSubscriber",
        "notifications:updateSubscriberData"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "firstName",
          "description": "Subscriber’s given name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastName",
          "description": "Subscriber’s family name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "email",
          "description": "Email address used for subscriber contact and delivery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "phone",
          "description": "Phone number used for subscriber contact and delivery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "avatarUrl",
          "description": "URL of the subscriber’s avatar image.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "locale",
          "description": "Subscriber locale used when rendering notifications.\n\ne.g., \"en-US\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timezone",
          "description": "Subscriber time zone used for notification presentation.\n\ne.g., \"America/Los\\_Angeles\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "customData",
          "description": "Additional template variables.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_SubscriberDataInput",
      "title": "SubscriberData",
      "slug": "/api/models/schema-1kgdnn5p53-input",
      "description": "Contact, locale, and custom attributes used by notification delivery.",
      "semantics": "Contact, locale, and custom attributes used by notification delivery.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SubscriberData",
        "slug": "/api/models/schema-1kgdnn5p53"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:updateSubscriberData"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "firstName",
          "description": "Subscriber’s given name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastName",
          "description": "Subscriber’s family name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "email",
          "description": "Email address used for subscriber contact and delivery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "phone",
          "description": "Phone number used for subscriber contact and delivery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "avatarUrl",
          "description": "URL of the subscriber’s avatar image.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "locale",
          "description": "Subscriber locale used when rendering notifications.\n\ne.g., \"en-US\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timezone",
          "description": "Subscriber time zone used for notification presentation.\n\ne.g., \"America/Los\\_Angeles\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "customData",
          "description": "Additional template variables.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_SubscriberSummary",
      "title": "SubscriberSummary",
      "slug": "/api/models/schema-okk1bp39s4",
      "description": "Contact and presence information returned in a subscriber listing.",
      "semantics": "Contact and presence information returned in a subscriber listing.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SubscriberSummary",
        "slug": "/api/models/schema-okk1bp39s4"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:listSubscribers"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "subscriberId",
          "description": "Identifier of the notification subscriber.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "email",
          "description": "Email address used for subscriber contact and delivery.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "firstName",
          "description": "Subscriber’s given name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastName",
          "description": "Subscriber’s family name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isOnline",
          "description": "Whether the provider reports the subscriber currently online.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastOnlineAt",
          "description": "Time when the provider last observed the subscriber online.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_TopicSubscriptionError",
      "title": "TopicSubscriptionError",
      "slug": "/api/models/schema-okmh5pnenu",
      "description": "Subscriber-specific failure reported while changing notification-topic membership.",
      "semantics": "Subscriber-specific failure reported while changing notification-topic membership.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TopicSubscriptionError",
        "slug": "/api/models/schema-okmh5pnenu"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:addSubscribersToTopic",
        "notifications:removeSubscribersFromTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "subscriberId",
          "description": "Identifier of the notification subscriber.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "code",
          "description": "Provider error code for the topic subscription failure.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "message",
          "description": "Diagnostic or descriptive text returned by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_TopicSubscriptionResult",
      "title": "TopicSubscriptionResult",
      "slug": "/api/models/schema-p2eb0gb1ln",
      "description": "Result of a topic subscription operation (add/remove subscribers). Novu returns partial success — some subscribers may fail while others succeed.",
      "semantics": "Result of a topic subscription operation (add/remove subscribers). Novu returns partial success — some subscribers may fail while others succeed.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TopicSubscriptionResult",
        "slug": "/api/models/schema-p2eb0gb1ln"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:addSubscribersToTopic",
        "notifications:removeSubscribersFromTopic"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "totalCount",
          "description": "Total number of subscribers reported for the membership-change result.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "successful",
          "description": "Number of subscribers accepted by the topic subscription operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "failed",
          "description": "Number of subscribers rejected by the topic subscription operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "errors",
          "description": "Errors reported while processing notification requests.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_UnarchiveInboxMessageResponse",
      "title": "UnarchiveInboxMessageResponse",
      "slug": "/api/models/schema-p2gddjt4rg",
      "description": "Result payload for restoring an archived notification to the subscriber’s inbox feed.",
      "semantics": "Result payload for restoring an archived notification to the subscriber’s inbox feed.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UnarchiveInboxMessageResponse",
        "slug": "/api/models/schema-p2gddjt4rg"
      },
      "operationOwners": [
        {
          "key": "notifications:unarchiveInboxMessage",
          "slug": "/api/notifications/unarchive-inbox-message",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:unarchiveInboxMessage"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "status",
          "description": "Status reported by the notification provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_UnregisterPushDeviceResponse",
      "title": "UnregisterPushDeviceResponse",
      "slug": "/api/models/schema-oknjd9o0ni",
      "description": "Result payload for removing an FCM token from the user’s registered push delivery targets.",
      "semantics": "Result payload for removing an FCM token from the user’s registered push delivery targets.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UnregisterPushDeviceResponse",
        "slug": "/api/models/schema-oknjd9o0ni"
      },
      "operationOwners": [
        {
          "key": "notifications:unregisterPushDevice",
          "slug": "/api/notifications/unregister-push-device",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:unregisterPushDevice"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "subscriberId",
          "description": "Identifier of the notification subscriber.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "remainingCredentialCount",
          "description": "Number of push credentials remaining after unregistering the device.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_UpdateSubscriberDataResponse",
      "title": "UpdateSubscriberDataResponse",
      "slug": "/api/models/schema-p2hpf6lu4g",
      "description": "Result payload for changing contact, locale, or custom attributes used for notification delivery.",
      "semantics": "Result payload for changing contact, locale, or custom attributes used for notification delivery.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateSubscriberDataResponse",
        "slug": "/api/models/schema-p2hpf6lu4g"
      },
      "operationOwners": [
        {
          "key": "notifications:updateSubscriberData",
          "slug": "/api/notifications/update-subscriber-data",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:updateSubscriberData"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "data",
          "description": "Contact, locale, and custom attributes returned for the subscriber.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time when this record was last updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_UpdateWorkflowResponse",
      "title": "UpdateWorkflowResponse",
      "slug": "/api/models/schema-okppi0lrg6",
      "description": "Result payload for changing a registered notification workflow definition.",
      "semantics": "Result payload for changing a registered notification workflow definition.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateWorkflowResponse",
        "slug": "/api/models/schema-okppi0lrg6"
      },
      "operationOwners": [
        {
          "key": "notifications:updateWorkflow",
          "slug": "/api/notifications/update-workflow",
          "direction": "response"
        }
      ],
      "usedBy": [
        "notifications:updateWorkflow"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflow",
          "description": "Notification workflow definition supplied to or returned by the provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "notification_v1_WorkflowPreferences",
      "title": "WorkflowPreferences",
      "slug": "/api/models/schema-p2jctrvcjc",
      "description": "Per-workflow notification channel preferences for a subscriber.",
      "semantics": "Per-workflow notification channel preferences for a subscriber.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "WorkflowPreferences",
        "slug": "/api/models/schema-p2jctrvcjc"
      },
      "operationOwners": [],
      "usedBy": [
        "notifications:getPreferences",
        "notifications:getSubscriber"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "workflowId",
          "description": "Novu workflow identifier (slug).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "workflowName",
          "description": "Human-readable display name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "critical",
          "description": "If true, subscriber cannot opt out (admin-enforced).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Workflow tags for grouping in settings UI.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "channels",
          "description": "Channel switches recorded for these subscriber preferences.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_DailyMeetingTokenProperties",
      "title": "DailyMeetingTokenProperties",
      "slug": "/api/models/schema-1kic2mada4",
      "description": "Daily meeting token configuration (subset of common fields)",
      "semantics": "Daily meeting token configuration (subset of common fields)",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "DailyMeetingTokenProperties",
        "slug": "/api/models/schema-1kic2mada4"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "isOwner",
          "description": "Whether the issued Daily meeting token grants room-owner privileges.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableAutoRecording",
          "description": "Whether the Daily meeting token requests automatic recording.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_DailyMeetingTokenPropertiesInput",
      "title": "DailyMeetingTokenProperties",
      "slug": "/api/models/schema-1kic2mada4-input",
      "description": "Daily meeting token configuration (subset of common fields)",
      "semantics": "Daily meeting token configuration (subset of common fields)",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "DailyMeetingTokenProperties",
        "slug": "/api/models/schema-1kic2mada4"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "isOwner",
          "description": "Whether the issued Daily meeting token grants room-owner privileges.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableAutoRecording",
          "description": "Whether the Daily meeting token requests automatic recording.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_DailyRoomProperties",
      "title": "DailyRoomProperties",
      "slug": "/api/models/schema-1kp6t31pq7",
      "description": "Daily room configuration (subset of frequently used fields)",
      "semantics": "Daily room configuration (subset of frequently used fields)",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "DailyRoomProperties",
        "slug": "/api/models/schema-1kp6t31pq7"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "nbf",
          "description": "Earliest time at which the Daily room can be joined, as Unix seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "exp",
          "description": "Expiration time of the Daily room, as Unix seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxParticipants",
          "description": "Maximum number of participants allowed in the Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enablePeopleUi",
          "description": "Whether the Daily room exposes participant-list controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enablePipUi",
          "description": "Whether the Daily room enables picture-in-picture controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableEmojiReactions",
          "description": "Whether the Daily room enables emoji reactions.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableHandRaising",
          "description": "Whether the Daily room enables hand-raising controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enablePrejoinUi",
          "description": "Whether the Daily room enables its prejoin screen.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableLiveCaptionsUi",
          "description": "Whether the Daily room exposes live-caption controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableNetworkUi",
          "description": "Whether the Daily room exposes network-information controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableNoiseCancellationUi",
          "description": "Whether the Daily room exposes noise-cancellation controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableBreakoutRooms",
          "description": "Whether the Daily room enables breakout rooms.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableKnocking",
          "description": "When true, requests Daily’s knocking feature for a private room, allowing a participant without a meeting token to ask a meeting owner for admission. It does not restrict a public room. The current room-property mapping forwards true only; false or omission does not explicitly disable a provider setting.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ownerOnlyBroadcast",
          "description": "Whether broadcasting is restricted to Daily room owners.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enforceUniqueUserIds",
          "description": "Whether the Daily room requires participant user identifiers to be unique.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableScreenshare",
          "description": "Whether screen sharing is enabled in the Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableVideoProcessingUi",
          "description": "Whether the Daily room exposes video-processing controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableChat",
          "description": "Whether chat is enabled in the Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableSharedChatHistory",
          "description": "Whether the Daily room enables shared chat history.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableAdvancedChat",
          "description": "Whether the Daily room enables advanced chat features.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableHiddenParticipants",
          "description": "Whether the Daily room allows hidden participants.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startVideoOff",
          "description": "Whether participants join the Daily room with video initially off.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startAudioOff",
          "description": "Whether participants join the Daily room with audio initially off.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableRecording",
          "description": "Recording mode configured for the Daily room.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ejectAtRoomExp",
          "description": "Whether participants are removed when the Daily room expires.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ejectAfterElapsed",
          "description": "Elapsed session duration after which participants are removed, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableMeshSfu",
          "description": "When true, forwards Daily’s `enable_mesh_sfu` room-topology option. Confirm provider support and its effect for your Daily account before relying on it. The current room-property mapping forwards true only; false or omission does not explicitly disable a provider setting.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sfuSwitchover",
          "description": "Daily topology setting controlling the switch to SFU transport.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableAdaptiveSimulcast",
          "description": "Whether adaptive simulcast is enabled for the Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableMultipartyAdaptiveSimulcast",
          "description": "Whether multiparty adaptive simulcast is enabled for the Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "experimentalOptimizeLargeCalls",
          "description": "Whether Daily’s experimental large-call optimization is requested.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lang",
          "description": "Language code configured for the Daily room interface, such as en, es, or pt-BR.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "meetingJoinHook",
          "description": "Webhook URL invoked by the Daily meeting-join hook.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "geo",
          "description": "Region selected for the Daily room media infrastructure, such as eu-west-2.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rtmpGeo",
          "description": "Region selected for Daily RTMP streaming, such as us-west-2.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "disableRtmpGeoFallback",
          "description": "Whether automatic RTMP region fallback is disabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "recordingsBucket",
          "description": "Storage destination configured for Daily recordings.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transcriptionBucket",
          "description": "Storage destination configured for Daily transcriptions.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "recordingsTemplate",
          "description": "Template used for recording object names in storage.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transcriptionTemplate",
          "description": "Template used for transcription object names in storage.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_DailyRoomProperties_RecordingBucketConfig",
      "title": "RecordingBucketConfig",
      "slug": "/api/models/schema-1klrt9eoq8",
      "description": "Object-storage destination and access settings for Daily recordings.",
      "semantics": "Object-storage destination and access settings for Daily recordings.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RecordingBucketConfig",
        "slug": "/api/models/schema-1klrt9eoq8"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "bucketName",
          "description": "Object-storage bucket used for Daily recordings.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "bucketRegion",
          "description": "Region containing the Daily recordings bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "assumeRoleArn",
          "description": "Role ARN Daily uses when accessing the storage bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowApiAccess",
          "description": "Whether Daily API access to bucket content is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowStreamingFromBucket",
          "description": "Whether streaming directly from the recording bucket is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_DailyRoomProperties_RecordingBucketConfigInput",
      "title": "RecordingBucketConfig",
      "slug": "/api/models/schema-1klrt9eoq8-input",
      "description": "Object-storage destination and access settings for Daily recordings.",
      "semantics": "Object-storage destination and access settings for Daily recordings.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RecordingBucketConfig",
        "slug": "/api/models/schema-1klrt9eoq8"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "bucketName",
          "description": "Object-storage bucket used for Daily recordings.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "bucketRegion",
          "description": "Region containing the Daily recordings bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "assumeRoleArn",
          "description": "Role ARN Daily uses when accessing the storage bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowApiAccess",
          "description": "Whether Daily API access to bucket content is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowStreamingFromBucket",
          "description": "Whether streaming directly from the recording bucket is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_DailyRoomProperties_TranscriptionBucketConfig",
      "title": "TranscriptionBucketConfig",
      "slug": "/api/models/schema-1knm9ns9ab",
      "description": "Object-storage destination and access settings for Daily transcriptions.",
      "semantics": "Object-storage destination and access settings for Daily transcriptions.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TranscriptionBucketConfig",
        "slug": "/api/models/schema-1knm9ns9ab"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "bucketName",
          "description": "Object-storage bucket used for Daily transcriptions.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "bucketRegion",
          "description": "Region containing the Daily transcriptions bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "assumeRoleArn",
          "description": "Role ARN Daily uses when accessing the storage bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowApiAccess",
          "description": "Whether Daily API access to bucket content is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_DailyRoomProperties_TranscriptionBucketConfigInput",
      "title": "TranscriptionBucketConfig",
      "slug": "/api/models/schema-1knm9ns9ab-input",
      "description": "Object-storage destination and access settings for Daily transcriptions.",
      "semantics": "Object-storage destination and access settings for Daily transcriptions.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TranscriptionBucketConfig",
        "slug": "/api/models/schema-1knm9ns9ab"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "bucketName",
          "description": "Object-storage bucket used for Daily transcriptions.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "bucketRegion",
          "description": "Region containing the Daily transcriptions bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "assumeRoleArn",
          "description": "Role ARN Daily uses when accessing the storage bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "allowApiAccess",
          "description": "Whether Daily API access to bucket content is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_DailyRoomPropertiesInput",
      "title": "DailyRoomProperties",
      "slug": "/api/models/schema-1kp6t31pq7-input",
      "description": "Daily room configuration (subset of frequently used fields)",
      "semantics": "Daily room configuration (subset of frequently used fields)",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "DailyRoomProperties",
        "slug": "/api/models/schema-1kp6t31pq7"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "nbf",
          "description": "Earliest time at which the Daily room can be joined, as Unix seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "exp",
          "description": "Expiration time of the Daily room, as Unix seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxParticipants",
          "description": "Maximum number of participants allowed in the Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enablePeopleUi",
          "description": "Whether the Daily room exposes participant-list controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enablePipUi",
          "description": "Whether the Daily room enables picture-in-picture controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableEmojiReactions",
          "description": "Whether the Daily room enables emoji reactions.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableHandRaising",
          "description": "Whether the Daily room enables hand-raising controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enablePrejoinUi",
          "description": "Whether the Daily room enables its prejoin screen.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableLiveCaptionsUi",
          "description": "Whether the Daily room exposes live-caption controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableNetworkUi",
          "description": "Whether the Daily room exposes network-information controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableNoiseCancellationUi",
          "description": "Whether the Daily room exposes noise-cancellation controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableBreakoutRooms",
          "description": "Whether the Daily room enables breakout rooms.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableKnocking",
          "description": "When true, requests Daily’s knocking feature for a private room, allowing a participant without a meeting token to ask a meeting owner for admission. It does not restrict a public room. The current room-property mapping forwards true only; false or omission does not explicitly disable a provider setting.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ownerOnlyBroadcast",
          "description": "Whether broadcasting is restricted to Daily room owners.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enforceUniqueUserIds",
          "description": "Whether the Daily room requires participant user identifiers to be unique.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableScreenshare",
          "description": "Whether screen sharing is enabled in the Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableVideoProcessingUi",
          "description": "Whether the Daily room exposes video-processing controls.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableChat",
          "description": "Whether chat is enabled in the Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableSharedChatHistory",
          "description": "Whether the Daily room enables shared chat history.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableAdvancedChat",
          "description": "Whether the Daily room enables advanced chat features.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableHiddenParticipants",
          "description": "Whether the Daily room allows hidden participants.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startVideoOff",
          "description": "Whether participants join the Daily room with video initially off.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startAudioOff",
          "description": "Whether participants join the Daily room with audio initially off.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableRecording",
          "description": "Recording mode configured for the Daily room.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ejectAtRoomExp",
          "description": "Whether participants are removed when the Daily room expires.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ejectAfterElapsed",
          "description": "Elapsed session duration after which participants are removed, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableMeshSfu",
          "description": "When true, forwards Daily’s `enable_mesh_sfu` room-topology option. Confirm provider support and its effect for your Daily account before relying on it. The current room-property mapping forwards true only; false or omission does not explicitly disable a provider setting.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sfuSwitchover",
          "description": "Daily topology setting controlling the switch to SFU transport.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableAdaptiveSimulcast",
          "description": "Whether adaptive simulcast is enabled for the Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "enableMultipartyAdaptiveSimulcast",
          "description": "Whether multiparty adaptive simulcast is enabled for the Daily room.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "experimentalOptimizeLargeCalls",
          "description": "Whether Daily’s experimental large-call optimization is requested.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lang",
          "description": "Language code configured for the Daily room interface, such as en, es, or pt-BR.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "meetingJoinHook",
          "description": "Webhook URL invoked by the Daily meeting-join hook.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "geo",
          "description": "Region selected for the Daily room media infrastructure, such as eu-west-2.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rtmpGeo",
          "description": "Region selected for Daily RTMP streaming, such as us-west-2.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "disableRtmpGeoFallback",
          "description": "Whether automatic RTMP region fallback is disabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "recordingsBucket",
          "description": "Storage destination configured for Daily recordings.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transcriptionBucket",
          "description": "Storage destination configured for Daily transcriptions.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "recordingsTemplate",
          "description": "Template used for recording object names in storage.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transcriptionTemplate",
          "description": "Template used for transcription object names in storage.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_DailySession",
      "title": "DailySession",
      "slug": "/api/models/schema-1ktuo6mcah",
      "description": "Session metadata for a Daily/Pipecat voice session",
      "semantics": "Session metadata for a Daily/Pipecat voice session",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "DailySession",
        "slug": "/api/models/schema-1ktuo6mcah"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "agentName",
          "description": "Name of the Pipecat agent running this voice session.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Identifier of the Pipecat voice session.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dailyRoom",
          "description": "Daily room address associated with the voice session.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dailyToken",
          "description": "Daily meeting token issued for the voice session.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userData",
          "description": "Generic body payload used to start.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dailyRoomProperties",
          "description": "Properties passed to Daily when configuring the session room.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dailyMeetingTokenProperties",
          "description": "Properties passed to Daily when issuing the meeting token.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startedAt",
          "description": "Time when the operation started.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_HeyGenConfig",
      "title": "HeyGenConfig",
      "slug": "/api/models/schema-pd3vbf0eel",
      "description": "HeyGen avatar/video configuration",
      "semantics": "HeyGen avatar/video configuration",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "HeyGenConfig",
        "slug": "/api/models/schema-pd3vbf0eel"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "enabled",
          "description": "Whether this configuration is enabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "avatarId",
          "description": "Identifier of the HeyGen avatar used for the session.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Version of the resource represented by this message.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "quality",
          "description": "Video-quality setting requested for the HeyGen avatar.\n\n\"high\" | \"medium\" | \"low\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "videoEncoding",
          "description": "Video codec requested for the HeyGen avatar stream.\n\n\"H264\" | \"VP8\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "voice",
          "description": "Voice configuration used by the HeyGen avatar.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "knowledgeId",
          "description": "Identifier of the HeyGen knowledge resource associated with the avatar.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "knowledgeBase",
          "description": "Knowledge text supplied to the HeyGen avatar configuration.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "disableIdleTimeout",
          "description": "Whether HeyGen’s session idle timeout is disabled.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "activityIdleTimeout",
          "description": "HeyGen activity idle timeout, in seconds.\n\nseconds",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_HeyGenElevenLabsSettings",
      "title": "HeyGenElevenLabsSettings",
      "slug": "/api/models/schema-on0k8c8den",
      "description": "ElevenLabs settings used within HeyGen voice configuration",
      "semantics": "ElevenLabs settings used within HeyGen voice configuration",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "HeyGenElevenLabsSettings",
        "slug": "/api/models/schema-on0k8c8den"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "stability",
          "description": "ElevenLabs voice-stability setting passed through HeyGen.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "similarityBoost",
          "description": "ElevenLabs voice-similarity setting passed through HeyGen.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modelId",
          "description": "ElevenLabs model identifier used for HeyGen voice synthesis.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "style",
          "description": "Integer style code.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "useSpeakerBoost",
          "description": "Whether ElevenLabs speaker boost is requested for the HeyGen voice.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_HeyGenVoiceSettings",
      "title": "HeyGenVoiceSettings",
      "slug": "/api/models/schema-p3askj7st1",
      "description": "HeyGen voice settings",
      "semantics": "HeyGen voice settings",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "HeyGenVoiceSettings",
        "slug": "/api/models/schema-p3askj7st1"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "voiceId",
          "description": "Provider voice identifier used for speech synthesis.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "rate",
          "description": "Speech-rate setting passed to the HeyGen voice provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "emotion",
          "description": "Emotion setting passed to HeyGen voice synthesis.\n\n\"EXCITED\" | \"SERIOUS\" | \"FRIENDLY\" | \"SOOTHING\" | \"BROADCASTER\"",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "elevenlabsSettings",
          "description": "ElevenLabs synthesis settings associated with the HeyGen voice.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_SocayoAgentConfig",
      "title": "SocayoAgentConfig",
      "slug": "/api/models/schema-phip2o3ju4",
      "description": "Socayo-specific agent configuration (bundled)",
      "semantics": "Socayo-specific agent configuration (bundled)",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SocayoAgentConfig",
        "slug": "/api/models/schema-phip2o3ju4"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "conversationKey",
          "description": "Conversation thread identifier associated with the voice session.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "userId",
          "description": "Identifier of the user associated with the operation.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "provider",
          "description": "Backend provider to use for session orchestration; defaults to PIPECAT\\_CLOUD",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tts",
          "description": "Bundled sub-configs Speech-synthesis configuration supplied to the Socayo agent.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "heygen",
          "description": "HeyGen avatar and voice configuration for the Socayo agent.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "transport",
          "description": "Audio transport settings used by the Socayo agent.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "extras",
          "description": "Optional extras for forward-compat",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_StartSessionUserData",
      "title": "StartSessionUserData",
      "slug": "/api/models/schema-1kri473p8r",
      "description": "Arbitrary user data passed when starting a session, as simple key/value pairs",
      "semantics": "Arbitrary user data passed when starting a session, as simple key/value pairs",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "StartSessionUserData",
        "slug": "/api/models/schema-1kri473p8r"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fields",
          "description": "Structured user data passed to the session-start request.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_StartSessionUserDataInput",
      "title": "StartSessionUserData",
      "slug": "/api/models/schema-1kri473p8r-input",
      "description": "Arbitrary user data passed when starting a session, as simple key/value pairs",
      "semantics": "Arbitrary user data passed when starting a session, as simple key/value pairs",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "StartSessionUserData",
        "slug": "/api/models/schema-1kri473p8r"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fields",
          "description": "Structured user data passed to the session-start request.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_TransportConfig",
      "title": "TransportConfig",
      "slug": "/api/models/schema-on4mqk0ok8",
      "description": "Transport audio configuration",
      "semantics": "Transport audio configuration",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TransportConfig",
        "slug": "/api/models/schema-on4mqk0ok8"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "audioInSampleRate",
          "description": "Sample rate of incoming audio, in hertz.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "audioOutSampleRate",
          "description": "Sample rate of outgoing audio, in hertz.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "pipecat_v1_common_v1_TTSConfig",
      "title": "TTSConfig",
      "slug": "/api/models/schema-on2m1c27d9",
      "description": "Cartesia Sonic-3 text-to-speech configuration for a Socayo agent.",
      "semantics": "Cartesia Sonic-3 text-to-speech configuration for a Socayo agent.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "TTSConfig",
        "slug": "/api/models/schema-on2m1c27d9"
      },
      "operationOwners": [],
      "usedBy": [
        "conversations:createDailySession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "voiceId",
          "description": "Provider-specific voice identifier (Cartesia voice\\_id)",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "model",
          "description": "Optional Cartesia model identifier (e.g., \"sonic-english\")",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sampleRate",
          "description": "Optional sample rate override (Hz)",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "volume",
          "description": "Volume multiplier (0.5..2.0)",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "speed",
          "description": "Speed multiplier (0.6..1.5)",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "emotion",
          "description": "Single emotion string (e.g., \"neutral\", \"excited\")",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "language",
          "description": "Cartesia language code (e.g., \"EN\")",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_enduser_gateway_v1_GetEndUserRequest",
      "title": "GetEndUserRequest",
      "slug": "/api/models/schema-oncibbd978",
      "description": "Inputs for retrieving an end-user identity and profile record. This schema declares no request fields.",
      "semantics": "Inputs for retrieving an end-user identity and profile record. This schema declares no request fields.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetEndUserRequest",
        "slug": "/api/models/schema-oncibbd978"
      },
      "operationOwners": [
        {
          "key": "end-users:getEndUser",
          "slug": "/api/end-users/get-end-user",
          "direction": "request"
        }
      ],
      "usedBy": [
        "end-users:getEndUser"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateDefaultGenerationConfigRequest",
      "title": "EndUserUpdateDefaultGenerationConfigRequest",
      "slug": "/api/models/schema-pk5duol8jv",
      "description": "Inputs for updating default model generation settings.",
      "semantics": "Inputs for updating default model generation settings.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "EndUserUpdateDefaultGenerationConfigRequest",
        "slug": "/api/models/schema-pk5duol8jv"
      },
      "operationOwners": [
        {
          "key": "end-users:updateDefaultGenerationConfig",
          "slug": "/api/end-users/update-default-generation-config",
          "direction": "request"
        }
      ],
      "usedBy": [
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "config",
          "description": "Default generation settings restricted to these user-settable fields: model, models, temperature, top\\_p, max\\_output\\_tokens, frequency\\_penalty, presence\\_penalty, stop\\_sequences, seed and language\\_preference. Recognized fields outside this list, including operational settings for prompts, tools, MCP and timeouts, reject the whole request. New GenerationConfig fields are rejected unless added to this allowlist. Each model must also be permitted by the platform model allowlist. Unknown JSON names may be discarded before these checks; they are not supported configuration settings.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateLocaleRequest",
      "title": "UpdateLocaleRequest",
      "slug": "/api/models/schema-onehb47p83",
      "description": "Inputs for updating the end user's locale preference.\n\n### Input constraints\n\n### locale\n\nThe locale value may be empty text. Otherwise it must start with two or three ASCII letters, followed by zero or more segments each consisting of a hyphen and two through eight ASCII letters or digits. No other characters or segments are accepted.",
      "semantics": "Inputs for updating the end user's locale preference.\n\n### Input constraints\n\n### locale\n\nThe locale value may be empty text. Otherwise it must start with two or three ASCII letters, followed by zero or more segments each consisting of a hyphen and two through eight ASCII letters or digits. No other characters or segments are accepted.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateLocaleRequest",
        "slug": "/api/models/schema-onehb47p83"
      },
      "operationOwners": [
        {
          "key": "end-users:updateLocale",
          "slug": "/api/end-users/update-locale",
          "direction": "request"
        }
      ],
      "usedBy": [
        "end-users:updateLocale"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "locale",
          "description": "BCP-47 locale override, such as \"es-MX\". Empty string clears the override.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateLocationRequest",
      "title": "UpdateLocationRequest",
      "slug": "/api/models/schema-ongmec62um",
      "description": "Gateway requests: same payloads as the internal service, minus EndUserRef.\n\nInputs for updating the end user's geographic coordinates.",
      "semantics": "Gateway requests: same payloads as the internal service, minus EndUserRef.\n\nInputs for updating the end user's geographic coordinates.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateLocationRequest",
        "slug": "/api/models/schema-ongmec62um"
      },
      "operationOwners": [
        {
          "key": "end-users:updateLocation",
          "slug": "/api/end-users/update-location",
          "direction": "request"
        }
      ],
      "usedBy": [
        "end-users:updateLocation"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "latitude",
          "description": "Latitude of the location in decimal degrees.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "longitude",
          "description": "Longitude of the location in decimal degrees.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateMetadataRequest",
      "title": "UpdateMetadataRequest",
      "slug": "/api/models/schema-onita4oh7t",
      "description": "Inputs for updating the end user's profile metadata.",
      "semantics": "Inputs for updating the end user's profile metadata.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateMetadataRequest",
        "slug": "/api/models/schema-onita4oh7t"
      },
      "operationOwners": [
        {
          "key": "end-users:updateMetadata",
          "slug": "/api/end-users/update-metadata",
          "direction": "request"
        }
      ],
      "usedBy": [
        "end-users:updateMetadata"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "metadata",
          "description": "Application-defined key-value metadata associated with the end user.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_enduser_v1_EndUserState",
      "title": "EndUserState",
      "slug": "/api/models/schema-1l1et4gp2i",
      "description": "Captured identity claims and editable profile values for a tenant's end user. Identity claims are copied from the verified token and are read-only through the profile update operations. Location, locale overrides, generation preferences and application metadata are set through their corresponding profile update operations.",
      "semantics": "Captured identity claims and editable profile values for a tenant's end user. Identity claims are copied from the verified token and are read-only through the profile update operations. Location, locale overrides, generation preferences and application metadata are set through their corresponding profile update operations.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "EndUserState",
        "slug": "/api/models/schema-1l1et4gp2i"
      },
      "operationOwners": [],
      "usedBy": [
        "end-users:getEndUser"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "subject",
          "description": "Subject claim identifying the end user within the identity provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tenantId",
          "description": "Identifier of the tenant that owns or scopes this record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "issuer",
          "description": "OIDC issuer identifying the identity provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "projectId",
          "description": "Identifier of the project within the tenant that scopes this record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "email",
          "description": "Email address received from the identity provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "emailVerified",
          "description": "Whether the identity provider marked the email address as verified.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Full name received from the identity provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "givenName",
          "description": "Given-name claim received from the identity provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "familyName",
          "description": "Family-name claim received from the identity provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "preferredUsername",
          "description": "Preferred username claim received from the identity provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "picture",
          "description": "Profile picture URL received from the identity provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "phoneNumber",
          "description": "Telephone number received from the identity provider.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "phoneNumberVerified",
          "description": "Whether the identity provider marked the telephone number as verified.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "signInProvider",
          "description": "Sign-in provider recorded with the captured identity.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "authMethod",
          "description": "Authentication method recorded with the captured identity.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "locale",
          "description": "Locale preference associated with the user or subscriber. IdP-sourced default (not the override).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "zoneinfo",
          "description": "Time zone claim received from the identity provider. IdP-sourced default.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "customClaims",
          "description": "Additional identity claims represented as string key-value pairs. The current end-user store does not populate this field.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "location",
          "description": "Coordinates and derived location metadata selected by the end user.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "localeOverride",
          "description": "Locale explicitly selected by the end user. When set, takes precedence over the identity provider's locale; when empty, the identity-provider locale is used.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "defaultGenerationConfig",
          "description": "Default model generation settings associated with the end-user profile.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Application-defined key-value metadata associated with the end user.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "firstSeenAt",
          "description": "Time the end-user identity was first captured.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastSeenAt",
          "description": "Time the end user's identity was most recently observed.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time this record was most recently updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_enduser_v1_GetEndUserResponse",
      "title": "GetEndUserResponse",
      "slug": "/api/models/schema-plnnfkcbd6",
      "description": "Result of retrieving an end-user identity and profile record. If no record exists, the returned end-user state is empty.",
      "semantics": "Result of retrieving an end-user identity and profile record. If no record exists, the returned end-user state is empty.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetEndUserResponse",
        "slug": "/api/models/schema-plnnfkcbd6"
      },
      "operationOwners": [
        {
          "key": "end-users:getEndUser",
          "slug": "/api/end-users/get-end-user",
          "direction": "response"
        }
      ],
      "usedBy": [
        "end-users:getEndUser"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "endUser",
          "description": "End-user identity and profile returned by the lookup. An empty message is returned when no matching end user exists.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_enduser_v1_Location",
      "title": "Location",
      "slug": "/api/models/schema-1kvbjenggb",
      "description": "End-user coordinates and associated location metadata.",
      "semantics": "End-user coordinates and associated location metadata.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Location",
        "slug": "/api/models/schema-1kvbjenggb"
      },
      "operationOwners": [],
      "usedBy": [
        "end-users:getEndUser",
        "end-users:updateLocation"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "latitude",
          "description": "Latitude of the location in decimal degrees.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "longitude",
          "description": "Longitude of the location in decimal degrees.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "city",
          "description": "City associated with the location; currently left empty because reverse geocoding is not implemented.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timezone",
          "description": "IANA time zone associated with the location, derived from its coordinates server-side.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time this record was most recently updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_enduser_v1_UpdateDefaultGenerationConfigResponse",
      "title": "EndUserUpdateDefaultGenerationConfigResponse",
      "slug": "/api/models/schema-on6qn14uve",
      "description": "Result of updating default model generation settings. This schema declares no result fields.",
      "semantics": "Result of updating default model generation settings. This schema declares no result fields.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "EndUserUpdateDefaultGenerationConfigResponse",
        "slug": "/api/models/schema-on6qn14uve"
      },
      "operationOwners": [
        {
          "key": "end-users:updateDefaultGenerationConfig",
          "slug": "/api/end-users/update-default-generation-config",
          "direction": "response"
        }
      ],
      "usedBy": [
        "end-users:updateDefaultGenerationConfig"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "platform_v1_services_enduser_v1_UpdateLocaleResponse",
      "title": "UpdateLocaleResponse",
      "slug": "/api/models/schema-on8a3jjqlu",
      "description": "Result of updating the end user's locale preference. This schema declares no result fields.",
      "semantics": "Result of updating the end user's locale preference. This schema declares no result fields.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateLocaleResponse",
        "slug": "/api/models/schema-on8a3jjqlu"
      },
      "operationOwners": [
        {
          "key": "end-users:updateLocale",
          "slug": "/api/end-users/update-locale",
          "direction": "response"
        }
      ],
      "usedBy": [
        "end-users:updateLocale"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "platform_v1_services_enduser_v1_UpdateLocationResponse",
      "title": "UpdateLocationResponse",
      "slug": "/api/models/schema-p3cptc0u36",
      "description": "Result of updating the end user's geographic coordinates.",
      "semantics": "Result of updating the end user's geographic coordinates.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateLocationResponse",
        "slug": "/api/models/schema-p3cptc0u36"
      },
      "operationOwners": [
        {
          "key": "end-users:updateLocation",
          "slug": "/api/end-users/update-location",
          "direction": "response"
        }
      ],
      "usedBy": [
        "end-users:updateLocation"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "location",
          "description": "Coordinates and derived location metadata stored for the end user. Includes derived IANA timezone.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_enduser_v1_UpdateMetadataResponse",
      "title": "UpdateMetadataResponse",
      "slug": "/api/models/schema-ona0g5vle5",
      "description": "Result of updating the end user's profile metadata. This schema declares no result fields.",
      "semantics": "Result of updating the end user's profile metadata. This schema declares no result fields.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateMetadataResponse",
        "slug": "/api/models/schema-ona0g5vle5"
      },
      "operationOwners": [
        {
          "key": "end-users:updateMetadata",
          "slug": "/api/end-users/update-metadata",
          "direction": "response"
        }
      ],
      "usedBy": [
        "end-users:updateMetadata"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_AddDatasetItemRequest",
      "title": "AddDatasetItemRequest",
      "slug": "/api/models/schema-onk56i6u38",
      "description": "Inputs for adding an input and expected-output pair in an evaluation dataset.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of these two conditions must hold: source\\_trace\\_id is nonempty; both conversation\\_id and source\\_user\\_message\\_id are nonempty. When source\\_trace\\_id is nonempty, the pair must be incomplete, but this predicate does not forbid one nonempty partial-pair field. When source\\_trace\\_id is empty, both fields in the pair must be nonempty.",
      "semantics": "Inputs for adding an input and expected-output pair in an evaluation dataset.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of these two conditions must hold: source\\_trace\\_id is nonempty; both conversation\\_id and source\\_user\\_message\\_id are nonempty. When source\\_trace\\_id is nonempty, the pair must be incomplete, but this predicate does not forbid one nonempty partial-pair field. When source\\_trace\\_id is empty, both fields in the pair must be nonempty.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "AddDatasetItemRequest",
        "slug": "/api/models/schema-onk56i6u38"
      },
      "operationOwners": [
        {
          "key": "evals:addDatasetItem",
          "slug": "/api/evals/add-dataset-item",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:addDatasetItem"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "datasetId",
          "description": "Identifier of the evaluation dataset.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "inputJson",
          "description": "Dataset item input serialized as JSON text.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "expectedOutputJson",
          "description": "Expected dataset item output serialized as JSON text.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceTraceId",
          "description": "Identifier of the trace used as the source for the dataset item.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional evaluation metadata serialized as JSON text.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationId",
          "description": "Identifier of the conversation associated with the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceUserMessageId",
          "description": "Identifier of the user message that originated the evaluated generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_AddDatasetItemResponse",
      "title": "AddDatasetItemResponse",
      "slug": "/api/models/schema-onmrjjnh6t",
      "description": "Result of adding an input and expected-output pair in an evaluation dataset.",
      "semantics": "Result of adding an input and expected-output pair in an evaluation dataset.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "AddDatasetItemResponse",
        "slug": "/api/models/schema-onmrjjnh6t"
      },
      "operationOwners": [
        {
          "key": "evals:addDatasetItem",
          "slug": "/api/evals/add-dataset-item",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:addDatasetItem"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "itemId",
          "description": "Identifier of the evaluation dataset item added by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_CompleteAnnotationQueueItemRequest",
      "title": "CompleteAnnotationQueueItemRequest",
      "slug": "/api/models/schema-onni9ddas0",
      "description": "Inputs for completing an evaluation object in an annotation queue.",
      "semantics": "Inputs for completing an evaluation object in an annotation queue.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CompleteAnnotationQueueItemRequest",
        "slug": "/api/models/schema-onni9ddas0"
      },
      "operationOwners": [
        {
          "key": "evals:completeAnnotationQueueItem",
          "slug": "/api/evals/complete-annotation-queue-item",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:completeAnnotationQueueItem"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "queueId",
          "description": "Identifier of the evaluation annotation queue.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "itemId",
          "description": "Identifier of the annotation queue item to complete.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_CompleteAnnotationQueueItemResponse",
      "title": "CompleteAnnotationQueueItemResponse",
      "slug": "/api/models/schema-pd5ikr0dep",
      "description": "Result of completing an evaluation object in an annotation queue.",
      "semantics": "Result of completing an evaluation object in an annotation queue.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CompleteAnnotationQueueItemResponse",
        "slug": "/api/models/schema-pd5ikr0dep"
      },
      "operationOwners": [
        {
          "key": "evals:completeAnnotationQueueItem",
          "slug": "/api/evals/complete-annotation-queue-item",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:completeAnnotationQueueItem"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "item",
          "description": "Annotation queue item returned by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateAnnotationQueueRequest",
      "title": "CreateAnnotationQueueRequest",
      "slug": "/api/models/schema-onpg6pt1pq",
      "description": "Inputs for creating a queue of evaluation objects awaiting annotation.",
      "semantics": "Inputs for creating a queue of evaluation objects awaiting annotation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateAnnotationQueueRequest",
        "slug": "/api/models/schema-onpg6pt1pq"
      },
      "operationOwners": [
        {
          "key": "evals:createAnnotationQueue",
          "slug": "/api/evals/create-annotation-queue",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:createAnnotationQueue"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name assigned to the evaluation annotation queue.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "scoreConfigIds",
          "description": "At least one: a queue's fixed config set is the whole difference between it and ad-hoc annotation.",
          "presence": "collection",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "description",
          "description": "Human-readable explanation of the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateAnnotationQueueResponse",
      "title": "CreateAnnotationQueueResponse",
      "slug": "/api/models/schema-onrlhoorgu",
      "description": "Result of creating a queue of evaluation objects awaiting annotation.",
      "semantics": "Result of creating a queue of evaluation objects awaiting annotation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateAnnotationQueueResponse",
        "slug": "/api/models/schema-onrlhoorgu"
      },
      "operationOwners": [
        {
          "key": "evals:createAnnotationQueue",
          "slug": "/api/evals/create-annotation-queue",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:createAnnotationQueue"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "queueId",
          "description": "Identifier of the evaluation annotation queue.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateCommentRequest",
      "title": "CreateCommentRequest",
      "slug": "/api/models/schema-p3ev09hkm7",
      "description": "Inputs for creating a comment attached to an evaluation object.",
      "semantics": "Inputs for creating a comment attached to an evaluation object.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateCommentRequest",
        "slug": "/api/models/schema-p3ev09hkm7"
      },
      "operationOwners": [
        {
          "key": "evals:createComment",
          "slug": "/api/evals/create-comment",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:createComment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "objectType",
          "description": "Kind of evaluation object to which the comment belongs.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "objectId",
          "description": "Identifier of the evaluation object to which the comment belongs.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "content",
          "description": "Body of the evaluation comment.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateCommentResponse",
      "title": "CreateCommentResponse",
      "slug": "/api/models/schema-ont36s6149",
      "description": "Result of creating a comment attached to an evaluation object.",
      "semantics": "Result of creating a comment attached to an evaluation object.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateCommentResponse",
        "slug": "/api/models/schema-ont36s6149"
      },
      "operationOwners": [
        {
          "key": "evals:createComment",
          "slug": "/api/evals/create-comment",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:createComment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "commentId",
          "description": "Identifier of the evaluation comment.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateDatasetRequest",
      "title": "CreateDatasetRequest",
      "slug": "/api/models/schema-onv3kqnjr7",
      "description": "Inputs for creating an evaluation dataset.",
      "semantics": "Inputs for creating an evaluation dataset.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateDatasetRequest",
        "slug": "/api/models/schema-onv3kqnjr7"
      },
      "operationOwners": [
        {
          "key": "evals:createDataset",
          "slug": "/api/evals/create-dataset",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:createDataset"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name assigned to the evaluation dataset.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "description",
          "description": "Human-readable explanation of the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional evaluation metadata serialized as JSON text.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateDatasetResponse",
      "title": "CreateDatasetResponse",
      "slug": "/api/models/schema-oo1e2daokr",
      "description": "Result of creating an evaluation dataset.",
      "semantics": "Result of creating an evaluation dataset.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateDatasetResponse",
        "slug": "/api/models/schema-oo1e2daokr"
      },
      "operationOwners": [
        {
          "key": "evals:createDataset",
          "slug": "/api/evals/create-dataset",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:createDataset"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "datasetId",
          "description": "Identifier of the evaluation dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateScoreConfigRequest",
      "title": "CreateScoreConfigRequest",
      "slug": "/api/models/schema-p3gofoobu4",
      "description": "Inputs for creating the definition and allowed values of an evaluation score.",
      "semantics": "Inputs for creating the definition and allowed values of an evaluation score.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateScoreConfigRequest",
        "slug": "/api/models/schema-p3gofoobu4"
      },
      "operationOwners": [
        {
          "key": "evals:createScoreConfig",
          "slug": "/api/evals/create-score-config",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:createScoreConfig"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name assigned to the evaluation score configuration.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "dataType",
          "description": "Value type used to interpret the evaluation score.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "categoricalValues",
          "description": "Allowed category values for the score configuration.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "minValue",
          "description": "Lower numeric bound for the score range.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxValue",
          "description": "Upper numeric bound for the score range.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateScoreConfigResponse",
      "title": "CreateScoreConfigResponse",
      "slug": "/api/models/schema-oo3ehsqpsi",
      "description": "Result of creating the definition and allowed values of an evaluation score.",
      "semantics": "Result of creating the definition and allowed values of an evaluation score.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateScoreConfigResponse",
        "slug": "/api/models/schema-oo3ehsqpsi"
      },
      "operationOwners": [
        {
          "key": "evals:createScoreConfig",
          "slug": "/api/evals/create-score-config",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:createScoreConfig"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "configId",
          "description": "Identifier of the evaluation score configuration.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_DeleteCommentRequest",
      "title": "DeleteCommentRequest",
      "slug": "/api/models/schema-oo51it6urk",
      "description": "Inputs for deleting a comment attached to an evaluation object.",
      "semantics": "Inputs for deleting a comment attached to an evaluation object.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteCommentRequest",
        "slug": "/api/models/schema-oo51it6urk"
      },
      "operationOwners": [
        {
          "key": "evals:deleteComment",
          "slug": "/api/evals/delete-comment",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:deleteComment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "commentId",
          "description": "Identifier of the evaluation comment.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_DeleteCommentResponse",
      "title": "DeleteCommentResponse",
      "slug": "/api/models/schema-oo7m50h9uv",
      "description": "Result of deleting a comment attached to an evaluation object.",
      "semantics": "Result of deleting a comment attached to an evaluation object.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteCommentResponse",
        "slug": "/api/models/schema-oo7m50h9uv"
      },
      "operationOwners": [
        {
          "key": "evals:deleteComment",
          "slug": "/api/evals/delete-comment",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:deleteComment"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deleted",
          "description": "Whether the deletion operation reported that it deleted the selected resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_DeleteScoreRequest",
      "title": "DeleteScoreRequest",
      "slug": "/api/models/schema-oo87pb2emq",
      "description": "Inputs for deleting a score attached to an evaluation object.",
      "semantics": "Inputs for deleting a score attached to an evaluation object.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteScoreRequest",
        "slug": "/api/models/schema-oo87pb2emq"
      },
      "operationOwners": [
        {
          "key": "evals:deleteScore",
          "slug": "/api/evals/delete-score",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:deleteScore"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scoreId",
          "description": "Identifier of the recorded evaluation score.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_DeleteScoreResponse",
      "title": "DeleteScoreResponse",
      "slug": "/api/models/schema-ooab87m25h",
      "description": "Result of deleting a score attached to an evaluation object.",
      "semantics": "Result of deleting a score attached to an evaluation object.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteScoreResponse",
        "slug": "/api/models/schema-ooab87m25h"
      },
      "operationOwners": [
        {
          "key": "evals:deleteScore",
          "slug": "/api/evals/delete-score",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:deleteScore"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deleted",
          "description": "Whether the deletion operation reported that it deleted the selected resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_EnqueueForAnnotationRequest",
      "title": "EnqueueForAnnotationRequest",
      "slug": "/api/models/schema-p3ifeimusc",
      "description": "Inputs for adding an evaluation object to an annotation queue.",
      "semantics": "Inputs for adding an evaluation object to an annotation queue.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "EnqueueForAnnotationRequest",
        "slug": "/api/models/schema-p3ifeimusc"
      },
      "operationOwners": [
        {
          "key": "evals:enqueueForAnnotation",
          "slug": "/api/evals/enqueue-for-annotation",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:enqueueForAnnotation"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "queueId",
          "description": "Identifier of the evaluation annotation queue.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "targetType",
          "description": "Kind of evaluation object assigned to the annotation queue.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "targetId",
          "description": "Identifier of the evaluation object assigned to the annotation queue.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_EnqueueForAnnotationResponse",
      "title": "EnqueueForAnnotationResponse",
      "slug": "/api/models/schema-oocg0320pf",
      "description": "Result of adding an evaluation object to an annotation queue.",
      "semantics": "Result of adding an evaluation object to an annotation queue.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "EnqueueForAnnotationResponse",
        "slug": "/api/models/schema-oocg0320pf"
      },
      "operationOwners": [
        {
          "key": "evals:enqueueForAnnotation",
          "slug": "/api/evals/enqueue-for-annotation",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:enqueueForAnnotation"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "queueItemId",
          "description": "Identifier assigned to the item in the annotation queue.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_GetDatasetRunRequest",
      "title": "GetDatasetRunRequest",
      "slug": "/api/models/schema-ooeqtpcvvh",
      "description": "Inputs for retrieving a named run against an evaluation dataset.",
      "semantics": "Inputs for retrieving a named run against an evaluation dataset.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetDatasetRunRequest",
        "slug": "/api/models/schema-ooeqtpcvvh"
      },
      "operationOwners": [
        {
          "key": "evals:getDatasetRun",
          "slug": "/api/evals/get-dataset-run",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:getDatasetRun"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "datasetName",
          "description": "Name used to address the evaluation dataset.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "runName",
          "description": "Name assigned to the evaluation dataset run.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_GetDatasetRunResponse",
      "title": "GetDatasetRunResponse",
      "slug": "/api/models/schema-p3k75geeg7",
      "description": "Result of retrieving a named run against an evaluation dataset.",
      "semantics": "Result of retrieving a named run against an evaluation dataset.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetDatasetRunResponse",
        "slug": "/api/models/schema-p3k75geeg7"
      },
      "operationOwners": [
        {
          "key": "evals:getDatasetRun",
          "slug": "/api/evals/get-dataset-run",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:getDatasetRun"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "run",
          "description": "Evaluation dataset run returned by the lookup.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_GetOverviewRequest",
      "title": "GetOverviewRequest",
      "slug": "/api/models/schema-1l4u2e743l",
      "description": "Inputs for retrieving aggregate evaluation activity and score statistics.",
      "semantics": "Inputs for retrieving aggregate evaluation activity and score statistics.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetOverviewRequest",
        "slug": "/api/models/schema-1l4u2e743l"
      },
      "operationOwners": [
        {
          "key": "evals:getOverview",
          "slug": "/api/evals/get-overview",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:getOverview"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fromTime",
          "description": "Beginning of the time range used to select evaluation records.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toTime",
          "description": "End of the time range used to select evaluation records.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "environment",
          "description": "Environment label used to select evaluation records.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_GetOverviewResponse",
      "title": "GetOverviewResponse",
      "slug": "/api/models/schema-1l586khu55",
      "description": "Result of retrieving aggregate evaluation activity and score statistics.",
      "semantics": "Result of retrieving aggregate evaluation activity and score statistics.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetOverviewResponse",
        "slug": "/api/models/schema-1l586khu55"
      },
      "operationOwners": [
        {
          "key": "evals:getOverview",
          "slug": "/api/evals/get-overview",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:getOverview"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "overview",
          "description": "Aggregate evaluation activity and score statistics for the selected scope.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_GetSessionRequest",
      "title": "GetSessionRequest",
      "slug": "/api/models/schema-ooghsj753p",
      "description": "Inputs for retrieving an evaluation session and its associated traces.",
      "semantics": "Inputs for retrieving an evaluation session and its associated traces.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetSessionRequest",
        "slug": "/api/models/schema-ooghsj753p"
      },
      "operationOwners": [
        {
          "key": "evals:getSession",
          "slug": "/api/evals/get-session",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:getSession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "sessionId",
          "description": "Identifier of the evaluation session grouping related traces.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_GetSessionResponse",
      "title": "GetSessionResponse",
      "slug": "/api/models/schema-pk7vg17if1",
      "description": "Result of retrieving an evaluation session and its associated traces.",
      "semantics": "Result of retrieving an evaluation session and its associated traces.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetSessionResponse",
        "slug": "/api/models/schema-pk7vg17if1"
      },
      "operationOwners": [
        {
          "key": "evals:getSession",
          "slug": "/api/evals/get-session",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:getSession"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "session",
          "description": "Evaluation session details returned by the lookup.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "contentRedacted",
          "description": "Whether sensitive evaluation content has been removed from the returned view.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_GetTraceRequest",
      "title": "GetTraceRequest",
      "slug": "/api/models/schema-ooijp0mq75",
      "description": "Inputs for retrieving an evaluation trace with its recorded generation details. Supply exactly one address: trace\\_id, or both conversation\\_id and source\\_user\\_message\\_id.",
      "semantics": "Inputs for retrieving an evaluation trace with its recorded generation details. Supply exactly one address: trace\\_id, or both conversation\\_id and source\\_user\\_message\\_id.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetTraceRequest",
        "slug": "/api/models/schema-ooijp0mq75"
      },
      "operationOwners": [
        {
          "key": "evals:getTrace",
          "slug": "/api/evals/get-trace",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:getTrace"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "traceId",
          "description": "Identifier of the evaluation trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationId",
          "description": "Identifier of the conversation associated with the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceUserMessageId",
          "description": "Identifier of the user message that started the evaluated turn, not the assistant reply's message identifier. Supply it together with conversation\\_id when addressing by turn.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_GetTraceResponse",
      "title": "GetTraceResponse",
      "slug": "/api/models/schema-pk90o8t9t3",
      "description": "Result of retrieving an evaluation trace with its recorded generation details.",
      "semantics": "Result of retrieving an evaluation trace with its recorded generation details.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetTraceResponse",
        "slug": "/api/models/schema-pk90o8t9t3"
      },
      "operationOwners": [
        {
          "key": "evals:getTrace",
          "slug": "/api/evals/get-trace",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:getTrace"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "trace",
          "description": "Evaluation trace details returned by the lookup.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "contentRedacted",
          "description": "Whether returned trace content is redacted. Redaction occurs before the trace is recorded, so its text is not a faithful copy of the conversation store.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListAnnotationQueueItemsRequest",
      "title": "ListAnnotationQueueItemsRequest",
      "slug": "/api/models/schema-p3mahq8rfr",
      "description": "Inputs for listing evaluation objects in an annotation queue.",
      "semantics": "Inputs for listing evaluation objects in an annotation queue.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListAnnotationQueueItemsRequest",
        "slug": "/api/models/schema-p3mahq8rfr"
      },
      "operationOwners": [
        {
          "key": "evals:listAnnotationQueueItems",
          "slug": "/api/evals/list-annotation-queue-items",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listAnnotationQueueItems"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "queueId",
          "description": "Identifier of the evaluation annotation queue.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "page",
          "description": "Page number requested from the backing service.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Annotation state used to restrict the queue listing. Omit to include both pending and completed items.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListAnnotationQueueItemsResponse",
      "title": "ListAnnotationQueueItemsResponse",
      "slug": "/api/models/schema-pd7ojkl3kq",
      "description": "Result of listing evaluation objects in an annotation queue.",
      "semantics": "Result of listing evaluation objects in an annotation queue.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListAnnotationQueueItemsResponse",
        "slug": "/api/models/schema-pd7ojkl3kq"
      },
      "operationOwners": [
        {
          "key": "evals:listAnnotationQueueItems",
          "slug": "/api/evals/list-annotation-queue-items",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listAnnotationQueueItems"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "items",
          "description": "Evaluation annotation queue items in this page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListAnnotationQueuesRequest",
      "title": "ListAnnotationQueuesRequest",
      "slug": "/api/models/schema-ooki74lv03",
      "description": "Inputs for listing queues of evaluation objects awaiting annotation.",
      "semantics": "Inputs for listing queues of evaluation objects awaiting annotation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListAnnotationQueuesRequest",
        "slug": "/api/models/schema-ooki74lv03"
      },
      "operationOwners": [
        {
          "key": "evals:listAnnotationQueues",
          "slug": "/api/evals/list-annotation-queues",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listAnnotationQueues"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "page",
          "description": "Page number requested from the backing service.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListAnnotationQueuesResponse",
      "title": "ListAnnotationQueuesResponse",
      "slug": "/api/models/schema-p3o55a5kit",
      "description": "Result of listing queues of evaluation objects awaiting annotation.",
      "semantics": "Result of listing queues of evaluation objects awaiting annotation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListAnnotationQueuesResponse",
        "slug": "/api/models/schema-p3o55a5kit"
      },
      "operationOwners": [
        {
          "key": "evals:listAnnotationQueues",
          "slug": "/api/evals/list-annotation-queues",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listAnnotationQueues"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "queues",
          "description": "Evaluation annotation queues included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListCommentsRequest",
      "title": "ListCommentsRequest",
      "slug": "/api/models/schema-p3qqtnkr6h",
      "description": "Inputs for listing comments attached to evaluation objects.",
      "semantics": "Inputs for listing comments attached to evaluation objects.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListCommentsRequest",
        "slug": "/api/models/schema-p3qqtnkr6h"
      },
      "operationOwners": [
        {
          "key": "evals:listComments",
          "slug": "/api/evals/list-comments",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listComments"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "objectType",
          "description": "Kind of evaluation object to which the comment belongs.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "objectId",
          "description": "Identifier of the evaluation object to which the comment belongs.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number requested from the backing service.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListCommentsResponse",
      "title": "ListCommentsResponse",
      "slug": "/api/models/schema-pd9tiucocq",
      "description": "Result of listing comments attached to evaluation objects.",
      "semantics": "Result of listing comments attached to evaluation objects.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListCommentsResponse",
        "slug": "/api/models/schema-pd9tiucocq"
      },
      "operationOwners": [
        {
          "key": "evals:listComments",
          "slug": "/api/evals/list-comments",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listComments"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "comments",
          "description": "Evaluation comments included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetItemsRequest",
      "title": "ListDatasetItemsRequest",
      "slug": "/api/models/schema-oomsbf1nke",
      "description": "Inputs for listing input and expected-output pairs in an evaluation dataset.",
      "semantics": "Inputs for listing input and expected-output pairs in an evaluation dataset.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListDatasetItemsRequest",
        "slug": "/api/models/schema-oomsbf1nke"
      },
      "operationOwners": [
        {
          "key": "evals:listDatasetItems",
          "slug": "/api/evals/list-dataset-items",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listDatasetItems"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "datasetId",
          "description": "Identifier of the evaluation dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "datasetName",
          "description": "Name used to address the evaluation dataset.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number requested from the backing service.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceTraceId",
          "description": "Identifier of the trace used as the source for the dataset item.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "onlyMissingExpectedOutput",
          "description": "Backs the curation list: items still lacking ground truth.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetItemsResponse",
      "title": "ListDatasetItemsResponse",
      "slug": "/api/models/schema-pdbcsatqf4",
      "description": "Result of listing input and expected-output pairs in an evaluation dataset.",
      "semantics": "Result of listing input and expected-output pairs in an evaluation dataset.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListDatasetItemsResponse",
        "slug": "/api/models/schema-pdbcsatqf4"
      },
      "operationOwners": [
        {
          "key": "evals:listDatasetItems",
          "slug": "/api/evals/list-dataset-items",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listDatasetItems"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "items",
          "description": "Evaluation dataset items in this page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetRunsRequest",
      "title": "ListDatasetRunsRequest",
      "slug": "/api/models/schema-oootgpvnhc",
      "description": "Inputs for listing recorded runs against an evaluation dataset.",
      "semantics": "Inputs for listing recorded runs against an evaluation dataset.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListDatasetRunsRequest",
        "slug": "/api/models/schema-oootgpvnhc"
      },
      "operationOwners": [
        {
          "key": "evals:listDatasetRuns",
          "slug": "/api/evals/list-dataset-runs",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listDatasetRuns"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "datasetName",
          "description": "Name used to address the evaluation dataset.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cursor",
          "description": "Opaque cursor from the previous response’s cursor\\_page.next\\_cursor. Leave empty for the first page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetRunsResponse",
      "title": "ListDatasetRunsResponse",
      "slug": "/api/models/schema-p3sqa65kdr",
      "description": "Result of listing recorded runs against an evaluation dataset.",
      "semantics": "Result of listing recorded runs against an evaluation dataset.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListDatasetRunsResponse",
        "slug": "/api/models/schema-p3sqa65kdr"
      },
      "operationOwners": [
        {
          "key": "evals:listDatasetRuns",
          "slug": "/api/evals/list-dataset-runs",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listDatasetRuns"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "runs",
          "description": "Evaluation dataset runs included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cursorPage",
          "description": "Cursor pagination details accompanying this result page.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetsRequest",
      "title": "ListDatasetsRequest",
      "slug": "/api/models/schema-ooqj9n6as0",
      "description": "Inputs for listing evaluation datasets.",
      "semantics": "Inputs for listing evaluation datasets.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListDatasetsRequest",
        "slug": "/api/models/schema-ooqj9n6as0"
      },
      "operationOwners": [
        {
          "key": "evals:listDatasets",
          "slug": "/api/evals/list-datasets",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listDatasets"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "page",
          "description": "Page number requested from the backing service.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetsResponse",
      "title": "ListDatasetsResponse",
      "slug": "/api/models/schema-p3t79frjva",
      "description": "Result of listing evaluation datasets.",
      "semantics": "Result of listing evaluation datasets.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListDatasetsResponse",
        "slug": "/api/models/schema-p3t79frjva"
      },
      "operationOwners": [
        {
          "key": "evals:listDatasets",
          "slug": "/api/evals/list-datasets",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listDatasets"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "datasets",
          "description": "Evaluation datasets included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListObservationsRequest",
      "title": "ListObservationsRequest",
      "slug": "/api/models/schema-pddbb3vpgo",
      "description": "Inputs for listing observations recorded within evaluation traces.",
      "semantics": "Inputs for listing observations recorded within evaluation traces.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListObservationsRequest",
        "slug": "/api/models/schema-pddbb3vpgo"
      },
      "operationOwners": [
        {
          "key": "evals:listObservations",
          "slug": "/api/evals/list-observations",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listObservations"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "traceId",
          "description": "Identifier of the evaluation trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "type",
          "description": "Observation type used to restrict the evaluation query.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "level",
          "description": "Severity level used to restrict evaluation observations or traces.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "parentObservationId",
          "description": "Identifier of the parent observation used to select child observations.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userId",
          "description": "Identifier of the end user associated with this operation or record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name used to restrict the evaluation record listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "environment",
          "description": "Environment label used to select evaluation records.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fromTime",
          "description": "Beginning of the time range used to select evaluation records.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toTime",
          "description": "End of the time range used to select evaluation records.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "filters",
          "description": "Structured filters applied to the evaluation record query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cursor",
          "description": "Opaque cursor from the previous response’s cursor\\_page.next\\_cursor. Leave empty for the first page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListObservationsResponse",
      "title": "ListObservationsResponse",
      "slug": "/api/models/schema-phkpqdsfmi",
      "description": "Result of listing observations recorded within evaluation traces.",
      "semantics": "Result of listing observations recorded within evaluation traces.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListObservationsResponse",
        "slug": "/api/models/schema-phkpqdsfmi"
      },
      "operationOwners": [
        {
          "key": "evals:listObservations",
          "slug": "/api/evals/list-observations",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listObservations"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "observations",
          "description": "Evaluation observations included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "contentRedacted",
          "description": "Whether sensitive evaluation content has been removed from the returned view.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cursorPage",
          "description": "Cursor pagination details accompanying this result page.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListScoreConfigsRequest",
      "title": "ListScoreConfigsRequest",
      "slug": "/api/models/schema-oos5qv1lvk",
      "description": "Inputs for listing definitions and allowed values of evaluation scores.",
      "semantics": "Inputs for listing definitions and allowed values of evaluation scores.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListScoreConfigsRequest",
        "slug": "/api/models/schema-oos5qv1lvk"
      },
      "operationOwners": [
        {
          "key": "evals:listScoreConfigs",
          "slug": "/api/evals/list-score-configs",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listScoreConfigs"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "page",
          "description": "Page number requested from the backing service.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "includeArchived",
          "description": "Whether archived score configurations are included in the listing. They are excluded when this field is omitted or false.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListScoreConfigsResponse",
      "title": "ListScoreConfigsResponse",
      "slug": "/api/models/schema-pdfq05439m",
      "description": "Result of listing definitions and allowed values of evaluation scores.",
      "semantics": "Result of listing definitions and allowed values of evaluation scores.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListScoreConfigsResponse",
        "slug": "/api/models/schema-pdfq05439m"
      },
      "operationOwners": [
        {
          "key": "evals:listScoreConfigs",
          "slug": "/api/evals/list-score-configs",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listScoreConfigs"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "configs",
          "description": "Evaluation score configurations included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "page",
          "description": "Page number, page size, and result totals returned by the evaluation provider.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListScoresRequest",
      "title": "ListScoresRequest",
      "slug": "/api/models/schema-pdhlr5c8fk",
      "description": "Inputs for listing scores attached to evaluation objects.",
      "semantics": "Inputs for listing scores attached to evaluation objects.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListScoresRequest",
        "slug": "/api/models/schema-pdhlr5c8fk"
      },
      "operationOwners": [
        {
          "key": "evals:listScores",
          "slug": "/api/evals/list-scores",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listScores"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "targetType",
          "description": "Kind of evaluation object targeted by the score or annotation.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "targetId",
          "description": "Identifier of the evaluation object targeted by the score or annotation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name used to restrict the evaluation record listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "source",
          "description": "Origin of the evaluation scores selected by this query.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fromTime",
          "description": "Beginning of the time range used to select evaluation records.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toTime",
          "description": "End of the time range used to select evaluation records.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userId",
          "description": "Identifier of the end user associated with this operation or record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "minValue",
          "description": "Lower numeric bound for the score range.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxValue",
          "description": "Upper numeric bound for the score range.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationId",
          "description": "Identifier of the conversation associated with the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Identifier of the evaluation session grouping related traces.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "dataType",
          "description": "Value type used to interpret the evaluation score.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "traceId",
          "description": "Identifier of the evaluation trace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "filters",
          "description": "Structured filters applied to the evaluation record query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cursor",
          "description": "Opaque cursor from the previous response’s cursor\\_page.next\\_cursor. Leave empty for the first page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListScoresResponse",
      "title": "ListScoresResponse",
      "slug": "/api/models/schema-pdjmp438u5",
      "description": "Result of listing scores attached to evaluation objects.",
      "semantics": "Result of listing scores attached to evaluation objects.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListScoresResponse",
        "slug": "/api/models/schema-pdjmp438u5"
      },
      "operationOwners": [
        {
          "key": "evals:listScores",
          "slug": "/api/evals/list-scores",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listScores"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scores",
          "description": "Evaluation scores included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "filterNarrowed",
          "description": "Whether additional filtering removed rows from this page. A narrowed page can contain fewer than page\\_size results while cursor\\_page.next\\_cursor still identifies another page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cursorPage",
          "description": "Cursor pagination details accompanying this result page.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListSessionsRequest",
      "title": "ListSessionsRequest",
      "slug": "/api/models/schema-pdla7tbam8",
      "description": "Inputs for listing evaluation sessions grouping related traces.",
      "semantics": "Inputs for listing evaluation sessions grouping related traces.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListSessionsRequest",
        "slug": "/api/models/schema-pdla7tbam8"
      },
      "operationOwners": [
        {
          "key": "evals:listSessions",
          "slug": "/api/evals/list-sessions",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listSessions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fromTime",
          "description": "Beginning of the time range used to select evaluation records.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toTime",
          "description": "End of the time range used to select evaluation records.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "environment",
          "description": "Environment label used to select evaluation records.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userId",
          "description": "Identifier of the end user associated with this operation or record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "filters",
          "description": "Structured filters applied to the evaluation record query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cursor",
          "description": "Opaque cursor from the previous response’s cursor\\_page.next\\_cursor. Leave empty for the first page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListSessionsResponse",
      "title": "ListSessionsResponse",
      "slug": "/api/models/schema-phmjtuthgv",
      "description": "Result of listing evaluation sessions grouping related traces.",
      "semantics": "Result of listing evaluation sessions grouping related traces.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListSessionsResponse",
        "slug": "/api/models/schema-phmjtuthgv"
      },
      "operationOwners": [
        {
          "key": "evals:listSessions",
          "slug": "/api/evals/list-sessions",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listSessions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "sessions",
          "description": "Evaluation session summaries included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cursorPage",
          "description": "Cursor pagination details accompanying this result page.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListTracesRequest",
      "title": "ListTracesRequest",
      "slug": "/api/models/schema-pdn5qbgf5a",
      "description": "Inputs for listing evaluation trace records.",
      "semantics": "Inputs for listing evaluation trace records.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListTracesRequest",
        "slug": "/api/models/schema-pdn5qbgf5a"
      },
      "operationOwners": [
        {
          "key": "evals:listTraces",
          "slug": "/api/evals/list-traces",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:listTraces"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "pageSize",
          "description": "Requested maximum number of entries in a result page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationId",
          "description": "Identifier of the conversation associated with the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "userId",
          "description": "Identifier of the end user associated with this operation or record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sessionId",
          "description": "Identifier of the evaluation session grouping related traces.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name used to restrict the evaluation record listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "environment",
          "description": "Environment label used to select evaluation records.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Version label used to select evaluation records.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "release",
          "description": "Application release label attached to evaluation records.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Tags used to classify or filter the evaluation record.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fromTime",
          "description": "Beginning of the time range used to select evaluation records.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "toTime",
          "description": "End of the time range used to select evaluation records.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "level",
          "description": "Severity level used to restrict evaluation observations or traces.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "orderBy",
          "description": "Ordering expression passed to the evaluation record query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "filters",
          "description": "Structured filters applied to the evaluation record query.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "searchQuery",
          "description": "Text searched within evaluation trace records.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "searchType",
          "description": "Search mode applied to the evaluation trace query.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cursor",
          "description": "Opaque cursor from the previous response’s cursor\\_page.next\\_cursor. Leave empty for the first page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_ListTracesResponse",
      "title": "ListTracesResponse",
      "slug": "/api/models/schema-phoetjuieq",
      "description": "Result of listing evaluation trace records.",
      "semantics": "Result of listing evaluation trace records.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListTracesResponse",
        "slug": "/api/models/schema-phoetjuieq"
      },
      "operationOwners": [
        {
          "key": "evals:listTraces",
          "slug": "/api/evals/list-traces",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:listTraces"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "traces",
          "description": "Evaluation trace summaries included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "contentRedacted",
          "description": "Whether returned trace content is redacted. Redaction occurs before the trace is recorded, so its text is not a faithful copy of the conversation store.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cursorPage",
          "description": "Cursor pagination details accompanying this result page.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_RecordScoreRequest",
      "title": "RecordScoreRequest",
      "slug": "/api/models/schema-p3v0oqeq6u",
      "description": "Inputs for recording an evaluation score. Supply exactly one target address: target\\_id, message\\_id, or both conversation\\_id and source\\_user\\_message\\_id. Authorship comes from the authenticated caller; the score source is assigned for this reviewer operation rather than selected by the request.",
      "semantics": "Inputs for recording an evaluation score. Supply exactly one target address: target\\_id, message\\_id, or both conversation\\_id and source\\_user\\_message\\_id. Authorship comes from the authenticated caller; the score source is assigned for this reviewer operation rather than selected by the request.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RecordScoreRequest",
        "slug": "/api/models/schema-p3v0oqeq6u"
      },
      "operationOwners": [
        {
          "key": "evals:recordScore",
          "slug": "/api/evals/record-score",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:recordScore"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "targetType",
          "description": "Kind of evaluation object to which the score applies.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "targetId",
          "description": "Not required — a caller may address by message or by turn instead.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name identifying the scoring dimension recorded for the evaluation target.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "dataType",
          "description": "Value type used to interpret the evaluation score.",
          "presence": "explicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "numericValue",
          "description": "Numeric score value for a numeric score configuration.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stringValue",
          "description": "Category value for a categorical evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "booleanValue",
          "description": "Boolean value for a boolean evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "textValue",
          "description": "Free-text value for a text evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "comment",
          "description": "Explanatory note accompanying the evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "configId",
          "description": "Score configuration selected from ListScoreConfigs. Required for this reviewer operation; a missing configuration is rejected.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "profileId",
          "description": "Identifier of the agent profile associated with the operation or generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "messageId",
          "description": "Identifier of the conversation message to score. Supply this instead of target\\_id or a conversation\\_id and source\\_user\\_message\\_id pair.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "conversationId",
          "description": "Identifier of the conversation associated with the evaluation record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sourceUserMessageId",
          "description": "Identifier of the user message that originated the evaluated generation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_RecordScoreResponse",
      "title": "RecordScoreResponse",
      "slug": "/api/models/schema-p41vuv2k1t",
      "description": "Result of recording a score attached to an evaluation object.",
      "semantics": "Result of recording a score attached to an evaluation object.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RecordScoreResponse",
        "slug": "/api/models/schema-p41vuv2k1t"
      },
      "operationOwners": [
        {
          "key": "evals:recordScore",
          "slug": "/api/evals/record-score",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:recordScore"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scoreId",
          "description": "Identifier of the recorded evaluation score.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "targetId",
          "description": "Resolved evaluation-object identifier, returned so a caller that addressed a message can use the object identity in later requests.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "targetType",
          "description": "Kind of evaluation object targeted by the score.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_UpdateDatasetItemRequest",
      "title": "UpdateDatasetItemRequest",
      "slug": "/api/models/schema-p43vlsh73s",
      "description": "Inputs for updating an input and expected-output pair in an evaluation dataset.",
      "semantics": "Inputs for updating an input and expected-output pair in an evaluation dataset.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateDatasetItemRequest",
        "slug": "/api/models/schema-p43vlsh73s"
      },
      "operationOwners": [
        {
          "key": "evals:updateDatasetItem",
          "slug": "/api/evals/update-dataset-item",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:updateDatasetItem"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "itemId",
          "description": "Identifier of the evaluation dataset item being updated.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "datasetId",
          "description": "Identifier of the evaluation dataset.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "inputJson",
          "description": "Dataset item input serialized as JSON text.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "expectedOutputJson",
          "description": "Expected dataset item output serialized as JSON text.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadataJson",
          "description": "Additional evaluation metadata serialized as JSON text.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Whether the evaluation dataset item is active or archived.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_UpdateDatasetItemResponse",
      "title": "UpdateDatasetItemResponse",
      "slug": "/api/models/schema-oour2ror4n",
      "description": "Result of updating an input and expected-output pair in an evaluation dataset.",
      "semantics": "Result of updating an input and expected-output pair in an evaluation dataset.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateDatasetItemResponse",
        "slug": "/api/models/schema-oour2ror4n"
      },
      "operationOwners": [
        {
          "key": "evals:updateDatasetItem",
          "slug": "/api/evals/update-dataset-item",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:updateDatasetItem"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "itemId",
          "description": "Identifier of the evaluation dataset item updated by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_UpdateScoreConfigRequest",
      "title": "UpdateScoreConfigRequest",
      "slug": "/api/models/schema-op0kobdcsh",
      "description": "Partial update of a score configuration. Unset fields retain their values; is\\_archived changes archival state. The score data type and categories cannot be changed through this request.",
      "semantics": "Partial update of a score configuration. Unset fields retain their values; is\\_archived changes archival state. The score data type and categories cannot be changed through this request.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateScoreConfigRequest",
        "slug": "/api/models/schema-op0kobdcsh"
      },
      "operationOwners": [
        {
          "key": "evals:updateScoreConfig",
          "slug": "/api/evals/update-score-config",
          "direction": "request"
        }
      ],
      "usedBy": [
        "evals:updateScoreConfig"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "configId",
          "description": "Identifier of the evaluation score configuration.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "name",
          "description": "Replacement name for the score configuration.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable explanation of the evaluation record.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "minValue",
          "description": "Lower numeric bound for the score range.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxValue",
          "description": "Upper numeric bound for the score range.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "isArchived",
          "description": "Whether the score configuration is marked as archived.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_eval_gateway_v1_UpdateScoreConfigResponse",
      "title": "UpdateScoreConfigResponse",
      "slug": "/api/models/schema-pdpgbgncba",
      "description": "Result of updating the definition and allowed values of an evaluation score.",
      "semantics": "Result of updating the definition and allowed values of an evaluation score.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateScoreConfigResponse",
        "slug": "/api/models/schema-pdpgbgncba"
      },
      "operationOwners": [
        {
          "key": "evals:updateScoreConfig",
          "slug": "/api/evals/update-score-config",
          "direction": "response"
        }
      ],
      "usedBy": [
        "evals:updateScoreConfig"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "config",
          "description": "Score configuration returned after the update.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_gateway_v1_CreateJobRequest",
      "title": "CreateJobRequest",
      "slug": "/api/models/schema-p45dvjhspl",
      "description": "Inputs for creating a scheduled job and its trigger settings.\n\n### Input constraints\n\n### interval\\_seconds\n\nThe interval\\_seconds value must be zero, meaning unset for this create request, or at least 60 seconds.\n\n### auto\\_pause\\_threshold\n\nThe auto\\_pause\\_threshold value must be zero, or between 3 and 100 inclusive.",
      "semantics": "Inputs for creating a scheduled job and its trigger settings.\n\n### Input constraints\n\n### interval\\_seconds\n\nThe interval\\_seconds value must be zero, meaning unset for this create request, or at least 60 seconds.\n\n### auto\\_pause\\_threshold\n\nThe auto\\_pause\\_threshold value must be zero, or between 3 and 100 inclusive.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateJobRequest",
        "slug": "/api/models/schema-p45dvjhspl"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:createJob",
          "slug": "/api/scheduled-jobs/create-job",
          "direction": "request"
        }
      ],
      "usedBy": [
        "scheduled-jobs:createJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Human-readable name assigned to the scheduled job.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "description",
          "description": "Human-readable explanation of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scheduleType",
          "description": "Selects which schedule expression to supply. For SCHEDULE\\_TYPE\\_CRON, set cron\\_expression and optionally timezone; for SCHEDULE\\_TYPE\\_ONCE, set scheduled\\_at; for SCHEDULE\\_TYPE\\_RECURRING\\_INTERVAL, set interval\\_seconds. Supply exactly one expression matching the chosen type.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cronExpression",
          "description": "Cron expression evaluated in timezone. Accepts 5 or 6 fields and supported shorthand expressions. Examples: `0 9 * * 1-5` for weekdays at 09:00, `*/15 * * * *` for every 15 minutes, and `0 0 1 * *` for the first day of each month at midnight. `@daily` means `0 0 * * *`; `@hourly` means `0 * * * *`.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timezone",
          "description": "IANA timezone for cron evaluation, such as \"America/New\\_York\". Defaults to \"UTC\".",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scheduledAt",
          "description": "Instant at which a one-time scheduled job should run.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "intervalSeconds",
          "description": "Interval between scheduled triggers, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "target",
          "description": "Destination and invocation settings for the scheduled job.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "retryPolicy",
          "description": "Attempt limits and backoff settings for the scheduled target.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Application-defined JSON metadata attached to the scheduled job.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "autoPauseThreshold",
          "description": "Consecutive failure threshold used to pause the scheduled job. Omission or zero selects the default of 10. A nonzero override must be from 3 through 100. This create request does not expose a value that disables auto-pause.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ownerSubject",
          "description": "Owner subject. When omitted, defaults to the caller derived from headers.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Optional client-supplied identifier, unique within (tenant, project) among live schedules. Immutable once set. Must not start with \"sched\\_\".",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_gateway_v1_DeleteJobRequest",
      "title": "DeleteJobRequest",
      "slug": "/api/models/schema-op773p2v5v",
      "description": "Inputs for deleting a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.",
      "semantics": "Inputs for deleting a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteJobRequest",
        "slug": "/api/models/schema-op773p2v5v"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:deleteJob",
          "slug": "/api/scheduled-jobs/delete-job",
          "direction": "request"
        }
      ],
      "usedBy": [
        "scheduled-jobs:deleteJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scheduleId",
          "description": "Identifier of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Caller-assigned correlation identifier for the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_gateway_v1_DeleteJobsForOwnerRequest",
      "title": "DeleteJobsForOwnerRequest",
      "slug": "/api/models/schema-op9vfi0aq7",
      "description": "Tenant/project come from the ingress headers. The owner is the caller itself (derived from x-user-id) — there are no body fields.",
      "semantics": "Tenant/project come from the ingress headers. The owner is the caller itself (derived from x-user-id) — there are no body fields.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteJobsForOwnerRequest",
        "slug": "/api/models/schema-op9vfi0aq7"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:deleteJobsForOwner",
          "slug": "/api/scheduled-jobs/delete-jobs-for-owner",
          "direction": "request"
        }
      ],
      "usedBy": [
        "scheduled-jobs:deleteJobsForOwner"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "platform_v1_services_scheduler_gateway_v1_DeleteJobsForProjectRequest",
      "title": "DeleteJobsForProjectRequest",
      "slug": "/api/models/schema-opbnbtc6ss",
      "description": "Tenant/project come from the ingress headers — the request body carries no fields.",
      "semantics": "Tenant/project come from the ingress headers — the request body carries no fields.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteJobsForProjectRequest",
        "slug": "/api/models/schema-opbnbtc6ss"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:deleteJobsForProject",
          "slug": "/api/scheduled-jobs/delete-jobs-for-project",
          "direction": "request"
        }
      ],
      "usedBy": [
        "scheduled-jobs:deleteJobsForProject"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "platform_v1_services_scheduler_gateway_v1_GetJobRequest",
      "title": "GetJobRequest",
      "slug": "/api/models/schema-opd9h9i79s",
      "description": "Inputs for retrieving a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.",
      "semantics": "Inputs for retrieving a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetJobRequest",
        "slug": "/api/models/schema-opd9h9i79s"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:getJob",
          "slug": "/api/scheduled-jobs/get-job",
          "direction": "request"
        }
      ],
      "usedBy": [
        "scheduled-jobs:getJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scheduleId",
          "description": "Identifier of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Caller-assigned correlation identifier for the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_gateway_v1_ListExecutionsRequest",
      "title": "ListExecutionsRequest",
      "slug": "/api/models/schema-p473u5tt5n",
      "description": "Inputs for listing the execution history of a scheduled job.",
      "semantics": "Inputs for listing the execution history of a scheduled job.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListExecutionsRequest",
        "slug": "/api/models/schema-p473u5tt5n"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:listExecutions",
          "slug": "/api/scheduled-jobs/list-executions",
          "direction": "request"
        }
      ],
      "usedBy": [
        "scheduled-jobs:listExecutions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scheduleId",
          "description": "Identifier of the scheduled job.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "pageSize",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageToken",
          "description": "Continuation token from a previous response; leave empty to start the listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "statusFilter",
          "description": "Execution status used to restrict the execution history.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_gateway_v1_ListJobsRequest",
      "title": "ListJobsRequest",
      "slug": "/api/models/schema-p49su6rrj9",
      "description": "Inputs for listing scheduled jobs and their trigger settings. A zero or omitted page size lets the server choose its default.",
      "semantics": "Inputs for listing scheduled jobs and their trigger settings. A zero or omitted page size lets the server choose its default.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListJobsRequest",
        "slug": "/api/models/schema-p49su6rrj9"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:listJobs",
          "slug": "/api/scheduled-jobs/list-jobs",
          "direction": "request"
        }
      ],
      "usedBy": [
        "scheduled-jobs:listJobs"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "pageSize",
          "description": "Number of entries requested per page. Zero or omission lets the server choose its default.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageToken",
          "description": "Continuation token from a previous response; leave empty to start the listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "stateFilter",
          "description": "Schedule lifecycle status used to restrict the job listing.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "targetKindFilter",
          "description": "Target kind used to restrict the scheduled job listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_gateway_v1_PauseJobRequest",
      "title": "PauseJobRequest",
      "slug": "/api/models/schema-1lf7fqu2c1",
      "description": "Inputs for pausing a scheduled job and its trigger settings.\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or both does not satisfy this condition.",
      "semantics": "Inputs for pausing a scheduled job and its trigger settings.\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or both does not satisfy this condition.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PauseJobRequest",
        "slug": "/api/models/schema-1lf7fqu2c1"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:pauseJob",
          "slug": "/api/scheduled-jobs/pause-job",
          "direction": "request"
        }
      ],
      "usedBy": [
        "scheduled-jobs:pauseJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scheduleId",
          "description": "Identifier of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "reason",
          "description": "Explanation recorded for pausing the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Caller-assigned correlation identifier for the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_gateway_v1_ResumeJobRequest",
      "title": "ResumeJobRequest",
      "slug": "/api/models/schema-opftuk7kks",
      "description": "Inputs for resuming a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.",
      "semantics": "Inputs for resuming a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ResumeJobRequest",
        "slug": "/api/models/schema-opftuk7kks"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:resumeJob",
          "slug": "/api/scheduled-jobs/resume-job",
          "direction": "request"
        }
      ],
      "usedBy": [
        "scheduled-jobs:resumeJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scheduleId",
          "description": "Identifier of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Caller-assigned correlation identifier for the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_gateway_v1_UpdateJobRequest",
      "title": "UpdateJobRequest",
      "slug": "/api/models/schema-p4b7julhno",
      "description": "Inputs for updating a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.\n\n### cron\\_expression\n\nThe cron\\_expression may be empty text. Otherwise it must have one of two shapes. The first starts with @ followed by one or more ASCII letters, digits, or underscores; it may optionally continue with one separator character and then one or more characters other than line feed. The second has exactly five or six nonempty groups of non-separator characters, separated by one or more separator characters, with no leading or trailing separator. For this constraint, separator characters are ASCII space, horizontal tab, line feed, form feed, and carriage return. The shorthand tail may contain these characters except line feed after its first separator.\n\n### interval\\_seconds\n\nThe interval\\_seconds value must be zero, meaning no change for this update request, or at least 60 seconds.\n\n### auto\\_pause\\_threshold\n\nThe auto\\_pause\\_threshold value must be zero, or between 3 and 100 inclusive.",
      "semantics": "Inputs for updating a scheduled job and its trigger settings.\n\n### Input constraints\n\n### Record relationship\n\nExactly one of schedule\\_id or external\\_id must be nonempty. Supplying neither or supplying both does not satisfy this condition.\n\n### cron\\_expression\n\nThe cron\\_expression may be empty text. Otherwise it must have one of two shapes. The first starts with @ followed by one or more ASCII letters, digits, or underscores; it may optionally continue with one separator character and then one or more characters other than line feed. The second has exactly five or six nonempty groups of non-separator characters, separated by one or more separator characters, with no leading or trailing separator. For this constraint, separator characters are ASCII space, horizontal tab, line feed, form feed, and carriage return. The shorthand tail may contain these characters except line feed after its first separator.\n\n### interval\\_seconds\n\nThe interval\\_seconds value must be zero, meaning no change for this update request, or at least 60 seconds.\n\n### auto\\_pause\\_threshold\n\nThe auto\\_pause\\_threshold value must be zero, or between 3 and 100 inclusive.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateJobRequest",
        "slug": "/api/models/schema-p4b7julhno"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:updateJob",
          "slug": "/api/scheduled-jobs/update-job",
          "direction": "request"
        }
      ],
      "usedBy": [
        "scheduled-jobs:updateJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scheduleId",
          "description": "Identifier of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Human-readable name assigned to the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable explanation of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cronExpression",
          "description": "Cron expression defining when the scheduled job runs.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timezone",
          "description": "IANA time zone used by the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scheduledAt",
          "description": "Instant at which a one-time scheduled job should run.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "intervalSeconds",
          "description": "Interval between scheduled triggers, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "target",
          "description": "Destination and invocation settings for the scheduled job.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retryPolicy",
          "description": "Attempt limits and backoff settings for the scheduled target.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Application-defined JSON metadata attached to the scheduled job.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "autoPauseThreshold",
          "description": "Consecutive failure threshold used to pause the scheduled job. Omission or zero leaves the existing threshold unchanged. A nonzero override must be from 3 through 100. This update request does not expose a value that disables auto-pause.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Lookup reference only. Exactly one of schedule\\_id / external\\_id must be set.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_DeleteJobResponse",
      "title": "DeleteJobResponse",
      "slug": "/api/models/schema-op1i7qm00r",
      "description": "Result of deleting a scheduled job and its trigger settings.",
      "semantics": "Result of deleting a scheduled job and its trigger settings.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteJobResponse",
        "slug": "/api/models/schema-op1i7qm00r"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:deleteJob",
          "slug": "/api/scheduled-jobs/delete-job",
          "direction": "response"
        }
      ],
      "usedBy": [
        "scheduled-jobs:deleteJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scheduleId",
          "description": "Identifier of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_DeleteJobsForOwnerResponse",
      "title": "DeleteJobsForOwnerResponse",
      "slug": "/api/models/schema-op347l9m23",
      "description": "Result of deleting scheduled jobs belonging to the selected owner.",
      "semantics": "Result of deleting scheduled jobs belonging to the selected owner.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteJobsForOwnerResponse",
        "slug": "/api/models/schema-op347l9m23"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:deleteJobsForOwner",
          "slug": "/api/scheduled-jobs/delete-jobs-for-owner",
          "direction": "response"
        }
      ],
      "usedBy": [
        "scheduled-jobs:deleteJobsForOwner"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deletedCount",
          "description": "Number of scheduled jobs deleted by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_DeleteJobsForProjectResponse",
      "title": "DeleteJobsForProjectResponse",
      "slug": "/api/models/schema-op5pusifis",
      "description": "Result of deleting scheduled jobs within the selected project.",
      "semantics": "Result of deleting scheduled jobs within the selected project.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteJobsForProjectResponse",
        "slug": "/api/models/schema-op5pusifis"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:deleteJobsForProject",
          "slug": "/api/scheduled-jobs/delete-jobs-for-project",
          "direction": "response"
        }
      ],
      "usedBy": [
        "scheduled-jobs:deleteJobsForProject"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deletedCount",
          "description": "Number of scheduled jobs deleted by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_Execution",
      "title": "Execution",
      "slug": "/api/models/schema-1l7vrun3li",
      "description": "Execution is a single firing record for a scheduled job.",
      "semantics": "Execution is a single firing record for a scheduled job.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Execution",
        "slug": "/api/models/schema-1l7vrun3li"
      },
      "operationOwners": [],
      "usedBy": [
        "scheduled-jobs:listExecutions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "executionId",
          "description": "Identifier of the scheduled job execution record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scheduleId",
          "description": "Identifier of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tenantId",
          "description": "Identifier of the tenant that owns or scopes this record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "projectId",
          "description": "Identifier of the project within the tenant that scopes this record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scheduledTime",
          "description": "Instant for which this execution or trigger was scheduled.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "startedAt",
          "description": "Time at which the scheduled execution started.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "completedAt",
          "description": "Time at which the scheduled execution completed.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "status",
          "description": "Execution outcome recorded for this scheduled attempt.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "httpStatus",
          "description": "HTTP status code returned by the target.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "attempt",
          "description": "Attempt number (1-based) within this firing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "durationMs",
          "description": "End-to-end duration of the delivery attempt, in milliseconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "targetKind",
          "description": "Kind of target invoked by the scheduled execution.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Error message when status is FAILED.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "responseBody",
          "description": "Truncated HTTP response body captured on failed dispatches, with a 4 KiB cap. Empty for successful dispatches by design — only error responses are stored. May also be empty for binary content types or transport-level errors (see response\\_size\\_bytes / error).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "responseHeaders",
          "description": "Allowlisted response headers from the failed dispatch. Allowlist: content-type, content-length, retry-after, x-request-id, date.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "responseTruncated",
          "description": "True when response\\_body was clipped at the 4 KiB cap.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "responseSizeBytes",
          "description": "Original response size in bytes (from Content-Length when present, else total bytes read before truncation).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "endReason",
          "description": "Explanation of an execution failure when status alone is insufficient. `discarded` means the job exhausted `maxAttempts` and will not be retried. Empty when there is no additional reason.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_ListExecutionsResponse",
      "title": "ListExecutionsResponse",
      "slug": "/api/models/schema-pdrld839l2",
      "description": "Result of listing the execution history of a scheduled job.",
      "semantics": "Result of listing the execution history of a scheduled job.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListExecutionsResponse",
        "slug": "/api/models/schema-pdrld839l2"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:listExecutions",
          "slug": "/api/scheduled-jobs/list-executions",
          "direction": "response"
        }
      ],
      "usedBy": [
        "scheduled-jobs:listExecutions"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "executions",
          "description": "Scheduled execution records included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nextPageToken",
          "description": "Opaque cursor token for the next page. Empty when no further pages exist.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_ListJobsResponse",
      "title": "ListJobsResponse",
      "slug": "/api/models/schema-pdtvjqnh4v",
      "description": "Result of listing scheduled jobs and their trigger settings.",
      "semantics": "Result of listing scheduled jobs and their trigger settings.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListJobsResponse",
        "slug": "/api/models/schema-pdtvjqnh4v"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:listJobs",
          "slug": "/api/scheduled-jobs/list-jobs",
          "direction": "response"
        }
      ],
      "usedBy": [
        "scheduled-jobs:listJobs"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "schedules",
          "description": "Scheduled jobs included in this result page.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nextPageToken",
          "description": "Opaque cursor token for the next page. Empty when no further pages exist.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Total number of records reported for this listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_RetryPolicy",
      "title": "RetryPolicy",
      "slug": "/api/models/schema-1l9ki2op1i",
      "description": "RetryPolicy controls how failed executions are retried.",
      "semantics": "RetryPolicy controls how failed executions are retried.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RetryPolicy",
        "slug": "/api/models/schema-1l9ki2op1i"
      },
      "operationOwners": [],
      "usedBy": [
        "scheduled-jobs:createJob",
        "scheduled-jobs:getJob",
        "scheduled-jobs:listJobs",
        "scheduled-jobs:pauseJob",
        "scheduled-jobs:resumeJob",
        "scheduled-jobs:updateJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "maxAttempts",
          "description": "Maximum delivery attempts (including the initial attempt). Default 10.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "initialBackoffMs",
          "description": "Initial backoff before the first retry, in milliseconds. Default 5000.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxBackoffMs",
          "description": "Maximum backoff cap, in milliseconds. Default 1800000 (30 min).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_RetryPolicyInput",
      "title": "RetryPolicy",
      "slug": "/api/models/schema-1l9ki2op1i-input",
      "description": "RetryPolicy controls how failed executions are retried.",
      "semantics": "RetryPolicy controls how failed executions are retried.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "RetryPolicy",
        "slug": "/api/models/schema-1l9ki2op1i"
      },
      "operationOwners": [],
      "usedBy": [
        "scheduled-jobs:createJob",
        "scheduled-jobs:updateJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "maxAttempts",
          "description": "Maximum delivery attempts (including the initial attempt). Default 10.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "initialBackoffMs",
          "description": "Initial backoff before the first retry, in milliseconds. Default 5000.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxBackoffMs",
          "description": "Maximum backoff cap, in milliseconds. Default 1800000 (30 min).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_Schedule",
      "title": "Schedule",
      "slug": "/api/models/schema-1ld0l8rmvg",
      "description": "Schedule is the canonical representation of a scheduled job.\n\nCreating any schedule type returns the `Schedule` resource directly, with the same shape used by get, pause and resume operations.\n\n[`triggerCount`](/api/models/schema-1ld0l8rmvg#response-field-triggercount): Cumulative firings.\n\n[`failureCount`](/api/models/schema-1ld0l8rmvg#response-field-failurecount): Cumulative failed first attempts; a later successful retry does not erase the earlier failure.\n\n[`consecutiveFailureCount`](/api/models/schema-1ld0l8rmvg#response-field-consecutivefailurecount): Current sequence of failed firings; a successful attempt resets it. This counter drives auto-pause.\n\nZero-valued counters can be omitted. Nonzero 64-bit counters are decimal JSON strings; preserve their integer precision.",
      "semantics": "Schedule is the canonical representation of a scheduled job.\n\nCreating any schedule type returns the `Schedule` resource directly, with the same shape used by get, pause and resume operations.\n\n[`triggerCount`](/api/models/schema-1ld0l8rmvg#response-field-triggercount): Cumulative firings.\n\n[`failureCount`](/api/models/schema-1ld0l8rmvg#response-field-failurecount): Cumulative failed first attempts; a later successful retry does not erase the earlier failure.\n\n[`consecutiveFailureCount`](/api/models/schema-1ld0l8rmvg#response-field-consecutivefailurecount): Current sequence of failed firings; a successful attempt resets it. This counter drives auto-pause.\n\nZero-valued counters can be omitted. Nonzero 64-bit counters are decimal JSON strings; preserve their integer precision.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "Schedule",
        "slug": "/api/models/schema-1ld0l8rmvg"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:createJob",
          "slug": "/api/scheduled-jobs/create-job",
          "direction": "response"
        },
        {
          "key": "scheduled-jobs:getJob",
          "slug": "/api/scheduled-jobs/get-job",
          "direction": "response"
        },
        {
          "key": "scheduled-jobs:pauseJob",
          "slug": "/api/scheduled-jobs/pause-job",
          "direction": "response"
        },
        {
          "key": "scheduled-jobs:resumeJob",
          "slug": "/api/scheduled-jobs/resume-job",
          "direction": "response"
        }
      ],
      "usedBy": [
        "scheduled-jobs:createJob",
        "scheduled-jobs:getJob",
        "scheduled-jobs:listJobs",
        "scheduled-jobs:pauseJob",
        "scheduled-jobs:resumeJob",
        "scheduled-jobs:updateJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "scheduleId",
          "description": "Server-assigned identifier of the scheduled job, prefixed with \"sched\\_\".",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tenantId",
          "description": "Identifier of the tenant that owns or scopes this record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "projectId",
          "description": "Identifier of the project within the tenant that scopes this record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "ownerSubject",
          "description": "Subject identifier of the owning user or service account.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Human-readable name assigned to the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable explanation of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scheduleType",
          "description": "Schedule type and expression.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "cronExpression",
          "description": "Cron expression. Populated when schedule\\_type is SCHEDULE\\_TYPE\\_CRON.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "timezone",
          "description": "IANA timezone for cron evaluation. Default \"UTC\".",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "scheduledAt",
          "description": "Exact fire time. Populated when schedule\\_type is SCHEDULE\\_TYPE\\_ONCE.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "intervalSeconds",
          "description": "Interval between firings in seconds. Populated when schedule\\_type is SCHEDULE\\_TYPE\\_RECURRING\\_INTERVAL.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "target",
          "description": "Destination and invocation settings for the scheduled job.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "state",
          "description": "Lifecycle status controlling whether the scheduled job can trigger.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "retryPolicy",
          "description": "Attempt limits and backoff settings for the scheduled target.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Application-defined JSON metadata attached to the scheduled job.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "autoPauseThreshold",
          "description": "If consecutive\\_failure\\_count reaches this threshold the job is auto-paused (state PAUSED, paused\\_by\\_subject \"system\\:auto-pause\").\n\nIt is compared against consecutive\\_failure\\_count, NOT failure\\_count. failure\\_count is cumulative for the schedule's whole life, so a healthy schedule that collects scattered failures over months would eventually exceed any threshold and pause itself forever.\n\nA stored threshold of 0 disables auto-pause; otherwise the threshold is from 3 through 100. The public create request uses 0 or omission to select the default of 10, and the public update request uses 0 or omission to leave the current threshold unchanged. These public requests do not provide a disable control.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "externalId",
          "description": "Client-supplied external id. Echoed back when set; empty otherwise. Optional, immutable, unique within (tenant\\_id, project\\_id) among live schedules. Never starts with the reserved system-id prefix \"sched\\_\".",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time at which the scheduled job was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdBySubject",
          "description": "Subject identifier recorded when the schedule was created.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time this record was most recently updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedBySubject",
          "description": "Subject identifier recorded when the schedule was last updated.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pausedAt",
          "description": "Time at which the schedule was paused.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pausedBySubject",
          "description": "Subject identifier recorded for the schedule pause.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pausedReason",
          "description": "Explanation recorded for the schedule pause.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resumedAt",
          "description": "Time at which the schedule was most recently resumed.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "resumedBySubject",
          "description": "Subject identifier recorded for the schedule resume.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "deletedAt",
          "description": "Time at which the schedule was deleted.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "deletedBySubject",
          "description": "Subject identifier recorded for the schedule deletion.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastTriggeredAt",
          "description": "Time when the schedule was last triggered. Trigger and failure counters advance at most once per scheduled firing on its first attempt; retrying that firing does not inflate them.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nextTriggerAt",
          "description": "Time calculated for the next scheduled trigger.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "triggerCount",
          "description": "Scheduled times that ran, cumulative for the schedule's whole life.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "failureCount",
          "description": "Scheduled times whose first attempt failed, cumulative for the schedule's whole life. A firing that fails on attempt 1 and succeeds on retry still counts here — a failure was observed.\n\nThis counter does NOT drive auto-pause. See consecutive\\_failure\\_count.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "consecutiveFailureCount",
          "description": "Current run of consecutive failed firings. This is the counter auto\\_pause\\_threshold is compared against.\n\nIncremented when a firing's first attempt fails; reset to 0 as soon as any attempt of any firing succeeds. So a firing that fails on attempt 1 and succeeds on retry has net zero effect here while still advancing failure\\_count — the target recovered, so the run is over.\n\nA non-success terminal outcome counts as a failure, including a firing cancelled on a terminal 4xx.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_ScheduledTriggerEnvelope",
      "title": "ScheduledTriggerEnvelope",
      "slug": "/api/models/schema-s6i1d2bv7o",
      "description": "Declared context for a scheduled action: the schedule ID, tenant, project, beneficiary and scheduled time. These fields are intended to carry trusted context from the scheduler. Receiving support for this envelope is not currently implemented.",
      "semantics": "Declared context for a scheduled action: the schedule ID, tenant, project, beneficiary and scheduled time. These fields are intended to carry trusted context from the scheduler. Receiving support for this envelope is not currently implemented.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ScheduledTriggerEnvelope",
        "slug": "/api/models/schema-s6i1d2bv7o"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/i828te0das"
      ],
      "fields": [
        {
          "name": "scheduleId",
          "description": "Identifier of the scheduled job.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "tenantId",
          "description": "Identifier of the tenant that owns or scopes this record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "projectId",
          "description": "Identifier of the project within the tenant that scopes this record.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "onBehalfOf",
          "description": "Subject on whose behalf the scheduled trigger runs.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "scheduledTime",
          "description": "Instant for which this execution or trigger was scheduled.",
          "presence": "message",
          "required": false,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_ScheduledTriggerEnvelopeInput",
      "title": "ScheduledTriggerEnvelope",
      "slug": "/api/models/schema-s6i1d2bv7o-input",
      "description": "Declared context for a scheduled action: the schedule ID, tenant, project, beneficiary and scheduled time. These fields are intended to carry trusted context from the scheduler. Receiving support for this envelope is not currently implemented.",
      "semantics": "Declared context for a scheduled action: the schedule ID, tenant, project, beneficiary and scheduled time. These fields are intended to carry trusted context from the scheduler. Receiving support for this envelope is not currently implemented.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ScheduledTriggerEnvelope",
        "slug": "/api/models/schema-s6i1d2bv7o"
      },
      "operationOwners": [],
      "usedBy": [],
      "usedByRoots": [
        "API Schema/i828te0das"
      ],
      "fields": [
        {
          "name": "scheduleId",
          "description": "Identifier of the scheduled job.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "tenantId",
          "description": "Identifier of the tenant that owns or scopes this record.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "projectId",
          "description": "Identifier of the project within the tenant that scopes this record.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "onBehalfOf",
          "description": "Subject on whose behalf the scheduled trigger runs.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "scheduledTime",
          "description": "Instant for which this execution or trigger was scheduled.",
          "presence": "message",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_ScheduleTarget",
      "title": "ScheduleTarget",
      "slug": "/api/models/schema-1lbkptb5rj",
      "description": "ScheduleTarget describes the HTTP endpoint that receives each job invocation.",
      "semantics": "ScheduleTarget describes the HTTP endpoint that receives each job invocation.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ScheduleTarget",
        "slug": "/api/models/schema-1lbkptb5rj"
      },
      "operationOwners": [],
      "usedBy": [
        "scheduled-jobs:createJob",
        "scheduled-jobs:getJob",
        "scheduled-jobs:listJobs",
        "scheduled-jobs:pauseJob",
        "scheduled-jobs:resumeJob",
        "scheduled-jobs:updateJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "url",
          "description": "Destination URL. Must be a valid absolute URI.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "method",
          "description": "HTTP method to use. Defaults to \"POST\".",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "kind",
          "description": "Logical kind used for routing and observability (e.g., \"notification\", \"llm\\_conversation\", \"metering\"). Required.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        },
        {
          "name": "payload",
          "description": "Arbitrary JSON payload forwarded verbatim to the target.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_ScheduleTargetInput",
      "title": "ScheduleTarget",
      "slug": "/api/models/schema-1lbkptb5rj-input",
      "description": "ScheduleTarget describes the HTTP endpoint that receives each job invocation.",
      "semantics": "ScheduleTarget describes the HTTP endpoint that receives each job invocation.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ScheduleTarget",
        "slug": "/api/models/schema-1lbkptb5rj"
      },
      "operationOwners": [],
      "usedBy": [
        "scheduled-jobs:createJob",
        "scheduled-jobs:updateJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "url",
          "description": "Destination URL. Must be a valid absolute URI.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "method",
          "description": "HTTP method to use. Defaults to \"POST\".",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "kind",
          "description": "Logical kind used for routing and observability (e.g., \"notification\", \"llm\\_conversation\", \"metering\"). Required.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "payload",
          "description": "Arbitrary JSON payload forwarded verbatim to the target.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_scheduler_v1_UpdateJobResponse",
      "title": "UpdateJobResponse",
      "slug": "/api/models/schema-pdvj6curjn",
      "description": "UpdateJob keeps a dedicated response wrapper (rather than the bare Schedule the other mutations return) because it carries response-only metadata that is not part of the persisted resource.",
      "semantics": "UpdateJob keeps a dedicated response wrapper (rather than the bare Schedule the other mutations return) because it carries response-only metadata that is not part of the persisted resource.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateJobResponse",
        "slug": "/api/models/schema-pdvj6curjn"
      },
      "operationOwners": [
        {
          "key": "scheduled-jobs:updateJob",
          "slug": "/api/scheduled-jobs/update-job",
          "direction": "response"
        }
      ],
      "usedBy": [
        "scheduled-jobs:updateJob"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "schedule",
          "description": "Scheduled job returned by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "effectiveAt",
          "description": "When the update takes effect. Current updates return immediate; next\\_resync and next\\_worker\\_deployment are not emitted. The returned schedule’s next\\_trigger\\_at identifies its next firing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_DeleteSecretRequest",
      "title": "DeleteSecretRequest",
      "slug": "/api/models/schema-ophg3agu0u",
      "description": "Selects a project secret to delete and whether to override reference checks.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "semantics": "Selects a project secret to delete and whether to override reference checks.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteSecretRequest",
        "slug": "/api/models/schema-ophg3agu0u"
      },
      "operationOwners": [
        {
          "key": "secrets:deleteSecret",
          "slug": "/api/secrets/delete-secret",
          "direction": "request"
        }
      ],
      "usedBy": [
        "secrets:deleteSecret"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name identifying the secret within its project.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "force",
          "description": "Delete even when custom MCP servers still reference this secret. Those servers then fail closed the next time they try to resolve it.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_DeleteSecretResponse",
      "title": "DeleteSecretResponse",
      "slug": "/api/models/schema-opj5u6kj82",
      "description": "Result of deleting a project secret.",
      "semantics": "Result of deleting a project secret.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteSecretResponse",
        "slug": "/api/models/schema-opj5u6kj82"
      },
      "operationOwners": [
        {
          "key": "secrets:deleteSecret",
          "slug": "/api/secrets/delete-secret",
          "direction": "response"
        }
      ],
      "usedBy": [
        "secrets:deleteSecret"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deleted",
          "description": "False when the secret did not exist; the call still succeeds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_GetSecretMetadataRequest",
      "title": "GetSecretMetadataRequest",
      "slug": "/api/models/schema-oplsdqbngt",
      "description": "Selects a project secret whose metadata is returned without its value.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "semantics": "Selects a project secret whose metadata is returned without its value.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetSecretMetadataRequest",
        "slug": "/api/models/schema-oplsdqbngt"
      },
      "operationOwners": [
        {
          "key": "secrets:getSecretMetadata",
          "slug": "/api/secrets/get-secret-metadata",
          "direction": "request"
        }
      ],
      "usedBy": [
        "secrets:getSecretMetadata"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name identifying the secret within its project.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_GetSecretMetadataResponse",
      "title": "GetSecretMetadataResponse",
      "slug": "/api/models/schema-p4d7t4n92d",
      "description": "Result of retrieving metadata for a project secret without its secret value.",
      "semantics": "Result of retrieving metadata for a project secret without its secret value.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetSecretMetadataResponse",
        "slug": "/api/models/schema-p4d7t4n92d"
      },
      "operationOwners": [
        {
          "key": "secrets:getSecretMetadata",
          "slug": "/api/secrets/get-secret-metadata",
          "direction": "response"
        }
      ],
      "usedBy": [
        "secrets:getSecretMetadata"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "metadata",
          "description": "Stored secret metadata; the secret value is not returned.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_ListSecretsRequest",
      "title": "ListSecretsRequest",
      "slug": "/api/models/schema-opm9clg9ei",
      "description": "Pagination settings for listing secret metadata within the current project.",
      "semantics": "Pagination settings for listing secret metadata within the current project.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListSecretsRequest",
        "slug": "/api/models/schema-opm9clg9ei"
      },
      "operationOwners": [
        {
          "key": "secrets:listSecrets",
          "slug": "/api/secrets/list-secrets",
          "direction": "request"
        }
      ],
      "usedBy": [
        "secrets:listSecrets"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "page",
          "description": "Page number requested from the backing service.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Number of secret metadata entries requested per page. Zero or omission lets the server choose the page size.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_ListSecretsResponse",
      "title": "ListSecretsResponse",
      "slug": "/api/models/schema-p4fiovr9di",
      "description": "Page of metadata for project secrets, without their values.",
      "semantics": "Page of metadata for project secrets, without their values.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListSecretsResponse",
        "slug": "/api/models/schema-p4fiovr9di"
      },
      "operationOwners": [
        {
          "key": "secrets:listSecrets",
          "slug": "/api/secrets/list-secrets",
          "direction": "response"
        }
      ],
      "usedBy": [
        "secrets:listSecrets"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "secrets",
          "description": "Secret metadata records returned by the listing; secret values are excluded.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "total",
          "description": "Total number of records reported for this listing.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_PutSecretRequest",
      "title": "PutSecretRequest",
      "slug": "/api/models/schema-opommv4g03",
      "description": "Inputs for writing a project secret and its metadata.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "semantics": "Inputs for writing a project secret and its metadata.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PutSecretRequest",
        "slug": "/api/models/schema-opommv4g03"
      },
      "operationOwners": [
        {
          "key": "secrets:putSecret",
          "slug": "/api/secrets/put-secret",
          "direction": "request"
        }
      ],
      "usedBy": [
        "secrets:putSecret"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name identifying the secret within its project.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "value",
          "description": "Secret value, limited to 64 KiB of UTF-8 bytes. Binary material is supplied as base64 by caller convention. Read operations return metadata without the secret value.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "description",
          "description": "Human-readable explanation of the secret.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "labels",
          "description": "Free-form labels used to organize and identify secrets.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_PutSecretResponse",
      "title": "PutSecretResponse",
      "slug": "/api/models/schema-p4hg0bg3p9",
      "description": "Stored metadata returned after writing a project secret; the secret value is not returned.",
      "semantics": "Stored metadata returned after writing a project secret; the secret value is not returned.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "PutSecretResponse",
        "slug": "/api/models/schema-p4hg0bg3p9"
      },
      "operationOwners": [
        {
          "key": "secrets:putSecret",
          "slug": "/api/secrets/put-secret",
          "direction": "response"
        }
      ],
      "usedBy": [
        "secrets:putSecret"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "metadata",
          "description": "Stored secret metadata; the secret value is not returned.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_SecretMetadata",
      "title": "SecretMetadata",
      "slug": "/api/models/schema-1lhjc44i8n",
      "description": "Metadata returned by secret read operations. Secret values are not included.",
      "semantics": "Metadata returned by secret read operations. Secret values are not included.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SecretMetadata",
        "slug": "/api/models/schema-1lhjc44i8n"
      },
      "operationOwners": [],
      "usedBy": [
        "secrets:getSecretMetadata",
        "secrets:listSecrets",
        "secrets:putSecret"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name identifying the secret within its project.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "projectId",
          "description": "Identifier of the project within the tenant that scopes this secret. `default` identifies the default project.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable explanation of the secret.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "labels",
          "description": "Free-form labels used to organize and identify secrets. Free-form, e.g. \\{\"kind\": \"mcp-auth\"}.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Version number of the stored secret metadata. Increments on every PutSecret.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdBy",
          "description": "Subject identifier recorded for the creator of this record. Subject from the X-User-ID header, when present.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "Time this record was created.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updatedAt",
          "description": "Time this record was most recently updated.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_SecretRef",
      "title": "SecretRef",
      "slug": "/api/models/schema-opqho625u2",
      "description": "Reference to a secret within the same tenant and project as the resource that uses it. Cross-project and cross-tenant secret references are not supported.\n\nSecret values are write-only through the project secret API: writes accept a value and return metadata, while read operations return metadata without the value. Resource references name a secret within their own scope rather than carrying its value or an alternate tenant or project.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "semantics": "Reference to a secret within the same tenant and project as the resource that uses it. Cross-project and cross-tenant secret references are not supported.\n\nSecret values are write-only through the project secret API: writes accept a value and return metadata, while read operations return metadata without the value. Resource references name a secret within their own scope rather than carrying its value or an alternate tenant or project.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SecretRef",
        "slug": "/api/models/schema-opqho625u2"
      },
      "operationOwners": [],
      "usedBy": [
        "mcp-servers:createCustomMcpServer",
        "mcp-servers:getCustomMcpServer",
        "mcp-servers:listCustomMcpServers",
        "mcp-servers:updateCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name identifying the secret within its project.",
          "presence": "implicit",
          "required": false,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "platform_v1_services_secretmanager_v1_SecretRefInput",
      "title": "SecretRef",
      "slug": "/api/models/schema-opqho625u2-input",
      "description": "Reference to a secret within the same tenant and project as the resource that uses it. Cross-project and cross-tenant secret references are not supported.\n\nSecret values are write-only through the project secret API: writes accept a value and return metadata, while read operations return metadata without the value. Resource references name a secret within their own scope rather than carrying its value or an alternate tenant or project.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "semantics": "Reference to a secret within the same tenant and project as the resource that uses it. Cross-project and cross-tenant secret references are not supported.\n\nSecret values are write-only through the project secret API: writes accept a value and return metadata, while read operations return metadata without the value. Resource references name a secret within their own scope rather than carrying its value or an alternate tenant or project.\n\n### Input constraints\n\n### name\n\nThe name must contain one through 63 characters. Its first character must be a lowercase ASCII letter or digit. Every remaining character must be a lowercase ASCII letter, digit, period, underscore, or hyphen.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "SecretRef",
        "slug": "/api/models/schema-opqho625u2"
      },
      "operationOwners": [],
      "usedBy": [
        "mcp-servers:createCustomMcpServer",
        "mcp-servers:updateCustomMcpServer"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "name",
          "description": "Name identifying the secret within its project.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "storage_v1_actors_storagemanager_v1_StorageManagerState",
      "title": "StorageManagerState",
      "slug": "/api/models/schema-phpid7698e",
      "description": "Tracked files, folders and storage usage for the effective storage owner.",
      "semantics": "Tracked files, folders and storage usage for the effective storage owner.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "StorageManagerState",
        "slug": "/api/models/schema-phpid7698e"
      },
      "operationOwners": [],
      "usedBy": [
        "storage:getState"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "userId",
          "description": "Identifier of the user associated with the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "folders",
          "description": "Path -> FolderInfo.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "files",
          "description": "Path -> FileInfo.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalSizeBytes",
          "description": "Combined size of the represented files, in bytes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "quotaBytes",
          "description": "Storage capacity allocated to the user, in bytes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalFileCount",
          "description": "Number of files tracked in the storage state.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalFolderCount",
          "description": "Number of folders tracked in the storage state.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "When user's storage was initialized.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "lastModified",
          "description": "Last modification timestamp.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_common_v1_FileInfo",
      "title": "FileInfo",
      "slug": "/api/models/schema-1lls6fo8p7",
      "description": "FileInfo contains metadata about a file",
      "semantics": "FileInfo contains metadata about a file",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "FileInfo",
        "slug": "/api/models/schema-1lls6fo8p7"
      },
      "operationOwners": [],
      "usedBy": [
        "storage:generateDownloadUrl",
        "storage:getFileMetadata",
        "storage:getState",
        "storage:listFiles",
        "storage:moveFile",
        "storage:registerUploadedFile",
        "storage:searchFiles",
        "storage:updateFileMetadata",
        "storage:uploadFile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fileId",
          "description": "Stable identifier of the stored file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name of the file within its containing folder.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "path",
          "description": "Full path (e.g., \"/documents/report.pdf\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "folderPath",
          "description": "Parent folder path.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sizeBytes",
          "description": "Size of the file content, in bytes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "contentType",
          "description": "Media type of the file content.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "uploadedAt",
          "description": "RFC3339 timestamp.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modifiedAt",
          "description": "RFC3339 timestamp.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Custom metadata.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "User-defined tags.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Optional description.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "storageRef",
          "description": "Reference to actual storage location.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "checksum",
          "description": "File checksum (SHA256).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "version",
          "description": "Version number (for versioning support).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_common_v1_FolderInfo",
      "title": "FolderInfo",
      "slug": "/api/models/schema-opsbitjge1",
      "description": "FolderInfo contains metadata about a folder",
      "semantics": "FolderInfo contains metadata about a folder",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "FolderInfo",
        "slug": "/api/models/schema-opsbitjge1"
      },
      "operationOwners": [],
      "usedBy": [
        "storage:createFolder",
        "storage:getState",
        "storage:listFiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "folderId",
          "description": "Unique folder ID.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "name",
          "description": "Name of the folder within its parent folder.\n\nFolder name",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "path",
          "description": "Full path (e.g., \"/documents/work\").",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "parentPath",
          "description": "Parent folder path.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "createdAt",
          "description": "RFC3339 timestamp.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "modifiedAt",
          "description": "RFC3339 timestamp.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Custom metadata.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fileCount",
          "description": "Number of files (direct children).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "subfolderCount",
          "description": "Number of subfolders.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalSizeBytes",
          "description": "Total size of all files in folder (recursive).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_common_v1_ObjectRef",
      "title": "ObjectRef",
      "slug": "/api/models/schema-1lj1ellabu",
      "description": "ObjectRef references an object in storage",
      "semantics": "ObjectRef references an object in storage",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "ObjectRef",
        "slug": "/api/models/schema-1lj1ellabu"
      },
      "operationOwners": [],
      "usedBy": [
        "storage:generateDownloadUrl",
        "storage:getFileMetadata",
        "storage:getState",
        "storage:listFiles",
        "storage:moveFile",
        "storage:registerUploadedFile",
        "storage:searchFiles",
        "storage:updateFileMetadata",
        "storage:uploadFile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "bucket",
          "description": "Storage bucket containing the object.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "key",
          "description": "Object key within the selected storage bucket.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "provider",
          "description": "Storage provider used to access the object.",
          "presence": "explicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_BatchGenerateDownloadUrlsRequest",
      "title": "BatchGenerateDownloadUrlsRequest",
      "slug": "/api/models/schema-p4jj5g2tff",
      "description": "Inputs for issuing signed download URLs for a collection of files.",
      "semantics": "Inputs for issuing signed download URLs for a collection of files.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "BatchGenerateDownloadUrlsRequest",
        "slug": "/api/models/schema-p4jj5g2tff"
      },
      "operationOwners": [
        {
          "key": "storage:batchGenerateDownloadUrls",
          "slug": "/api/storage/batch-generate-download-urls",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:batchGenerateDownloadUrls"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fileIds",
          "description": "File IDs to resolve (1-50 per batch).",
          "presence": "collection",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "expiresSeconds",
          "description": "Requested lifetime of the signed URL, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_BatchGenerateDownloadUrlsResponse",
      "title": "BatchGenerateDownloadUrlsResponse",
      "slug": "/api/models/schema-p4logvgvb7",
      "description": "Result payload for issuing signed download URLs for a collection of files.",
      "semantics": "Result payload for issuing signed download URLs for a collection of files.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "BatchGenerateDownloadUrlsResponse",
        "slug": "/api/models/schema-p4logvgvb7"
      },
      "operationOwners": [
        {
          "key": "storage:batchGenerateDownloadUrls",
          "slug": "/api/storage/batch-generate-download-urls",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:batchGenerateDownloadUrls"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "results",
          "description": "Signed download URL or item-specific error for each requested file.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_CreateFolderRequest",
      "title": "CreateFolderRequest",
      "slug": "/api/models/schema-p4nn8ua7oo",
      "description": "Inputs for creating a folder entry in the user’s storage namespace.",
      "semantics": "Inputs for creating a folder entry in the user’s storage namespace.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateFolderRequest",
        "slug": "/api/models/schema-p4nn8ua7oo"
      },
      "operationOwners": [
        {
          "key": "storage:createFolder",
          "slug": "/api/storage/create-folder",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:createFolder"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "folderPath",
          "description": "Path of the folder within the user’s storage namespace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional attributes associated with the resource.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_CreateFolderResponse",
      "title": "CreateFolderResponse",
      "slug": "/api/models/schema-p4pp7tpn40",
      "description": "Result payload for creating a folder entry in the user’s storage namespace.",
      "semantics": "Result payload for creating a folder entry in the user’s storage namespace.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "CreateFolderResponse",
        "slug": "/api/models/schema-p4pp7tpn40"
      },
      "operationOwners": [
        {
          "key": "storage:createFolder",
          "slug": "/api/storage/create-folder",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:createFolder"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "folder",
          "description": "Metadata for the folder affected by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "created",
          "description": "Whether this operation created a new folder.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_DeleteFileRequest",
      "title": "DeleteFileRequest",
      "slug": "/api/models/schema-p4rjvbm5v1",
      "description": "Inputs for removing a stored file and its tracked metadata.",
      "semantics": "Inputs for removing a stored file and its tracked metadata.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteFileRequest",
        "slug": "/api/models/schema-p4rjvbm5v1"
      },
      "operationOwners": [
        {
          "key": "storage:deleteFile",
          "slug": "/api/storage/delete-file",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:deleteFile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fileId",
          "description": "Stable identifier of the stored file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_DeleteFileResponse",
      "title": "DeleteFileResponse",
      "slug": "/api/models/schema-opu4i64v58",
      "description": "Result payload for removing a stored file and its tracked metadata.",
      "semantics": "Result payload for removing a stored file and its tracked metadata.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteFileResponse",
        "slug": "/api/models/schema-opu4i64v58"
      },
      "operationOwners": [
        {
          "key": "storage:deleteFile",
          "slug": "/api/storage/delete-file",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:deleteFile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deleted",
          "description": "Whether the deletion operation reports the resource removed.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "spaceFreedBytes",
          "description": "Storage capacity reported freed by deletion, in bytes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_DeleteFolderRequest",
      "title": "DeleteFolderRequest",
      "slug": "/api/models/schema-p4tpfvub1f",
      "description": "Inputs for removing a folder entry and optionally its descendant content.",
      "semantics": "Inputs for removing a folder entry and optionally its descendant content.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteFolderRequest",
        "slug": "/api/models/schema-p4tpfvub1f"
      },
      "operationOwners": [
        {
          "key": "storage:deleteFolder",
          "slug": "/api/storage/delete-folder",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:deleteFolder"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "folderPath",
          "description": "Path of the folder within the user’s storage namespace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "recursive",
          "description": "Whether the operation includes descendant folders and their contents.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_DeleteFolderResponse",
      "title": "DeleteFolderResponse",
      "slug": "/api/models/schema-oq0tr77860",
      "description": "Result payload for removing a folder entry and optionally its descendant content.",
      "semantics": "Result payload for removing a folder entry and optionally its descendant content.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "DeleteFolderResponse",
        "slug": "/api/models/schema-oq0tr77860"
      },
      "operationOwners": [
        {
          "key": "storage:deleteFolder",
          "slug": "/api/storage/delete-folder",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:deleteFolder"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "deleted",
          "description": "Whether the deletion operation reports the resource removed.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "filesDeleted",
          "description": "Number of files reported deleted by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "foldersDeleted",
          "description": "Number of folders reported deleted by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_FileFilter",
      "title": "FileFilter",
      "slug": "/api/models/schema-oq26kmqtvq",
      "description": "Name, extension, tag and size criteria for selecting stored files. Upload-time fields are accepted but are not applied by the current list and search handlers.",
      "semantics": "Name, extension, tag and size criteria for selecting stored files. Upload-time fields are accepted but are not applied by the current list and search handlers.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "FileFilter",
        "slug": "/api/models/schema-oq26kmqtvq"
      },
      "operationOwners": [],
      "usedBy": [
        "storage:listFiles",
        "storage:searchFiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "extensions",
          "description": "File extensions used to restrict matching files.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Labels associated with the resource for organization or filtering.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "minSizeBytes",
          "description": "Minimum file size included by the filter, in bytes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxSizeBytes",
          "description": "Maximum file size included by the filter, in bytes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "uploadedAfter",
          "description": "Declared lower upload-time bound. The current list-files and search-files handlers accept this field but do not apply it. Do not rely on it to exclude files by date; inspect returned timestamps and the operation’s result limits.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "uploadedBefore",
          "description": "Declared upper upload-time bound. The current list-files and search-files handlers accept this field but do not apply it. Do not rely on it to exclude files by date; inspect returned timestamps and the operation’s result limits.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nameContains",
          "description": "Text that must occur in the selected file’s name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_FileUrlResult",
      "title": "FileUrlResult",
      "slug": "/api/models/schema-oq46sv4kha",
      "description": "Signed download URL or item-specific error for one requested file.",
      "semantics": "Signed download URL or item-specific error for one requested file.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "domain-model",
        "title": "FileUrlResult",
        "slug": "/api/models/schema-oq46sv4kha"
      },
      "operationOwners": [],
      "usedBy": [
        "storage:batchGenerateDownloadUrls"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fileId",
          "description": "Stable identifier of the stored file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "url",
          "description": "Signed download URL for the requested file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "success",
          "description": "Whether the operation reports a successful result.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "error",
          "description": "Error information reported for this operation or item.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "contentType",
          "description": "MIME type (e.g. \"image/jpeg\"); lets consumers pick the right content-part shape (IMAGE\\_URL vs FILE\\_URL). Empty when success = false or unknown.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_GenerateDownloadUrlRequest",
      "title": "GenerateDownloadUrlRequest",
      "slug": "/api/models/schema-p4v2ucatgp",
      "description": "Inputs for issuing a signed URL for downloading a stored file.",
      "semantics": "Inputs for issuing a signed URL for downloading a stored file.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GenerateDownloadUrlRequest",
        "slug": "/api/models/schema-p4v2ucatgp"
      },
      "operationOwners": [
        {
          "key": "storage:generateDownloadUrl",
          "slug": "/api/storage/generate-download-url",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:generateDownloadUrl"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fileId",
          "description": "Stable file ID to resolve to a signed URL.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "expiresSeconds",
          "description": "Requested lifetime of the signed URL, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "responseContentDisposition",
          "description": "Content-Disposition override requested for the signed download response. Use attachment with a filename to request a download under that name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_GenerateDownloadUrlResponse",
      "title": "GenerateDownloadUrlResponse",
      "slug": "/api/models/schema-phrdtoldl1",
      "description": "Result payload for issuing a signed URL for downloading a stored file.",
      "semantics": "Result payload for issuing a signed URL for downloading a stored file.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GenerateDownloadUrlResponse",
        "slug": "/api/models/schema-phrdtoldl1"
      },
      "operationOwners": [
        {
          "key": "storage:generateDownloadUrl",
          "slug": "/api/storage/generate-download-url",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:generateDownloadUrl"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "url",
          "description": "URL associated with the resource or outbound request.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "file",
          "description": "Metadata for the file affected or retrieved by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_GenerateUploadUrlRequest",
      "title": "GenerateUploadUrlRequest",
      "slug": "/api/models/schema-p51tmjgh1h",
      "description": "Inputs for issuing a signed URL for a direct file upload.",
      "semantics": "Inputs for issuing a signed URL for a direct file upload.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GenerateUploadUrlRequest",
        "slug": "/api/models/schema-p51tmjgh1h"
      },
      "operationOwners": [
        {
          "key": "storage:generateUploadUrl",
          "slug": "/api/storage/generate-upload-url",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:generateUploadUrl"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "folderPath",
          "description": "Path of the folder within the user’s storage namespace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fileName",
          "description": "File name to use within the selected folder.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "contentType",
          "description": "Media type describing the file or response body.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "expiresSeconds",
          "description": "Requested lifetime of the signed URL, in seconds.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional attributes associated with the resource.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "sizeBytes",
          "description": "Declared upload size in bytes. Required (> 0): pre-checked against quota and bound into the signed URL via x-goog-content-length-range so GCS itself rejects larger uploads.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_GenerateUploadUrlResponse",
      "title": "GenerateUploadUrlResponse",
      "slug": "/api/models/schema-oq6h7uersh",
      "description": "Result payload for issuing a signed URL for a direct file upload.",
      "semantics": "Result payload for issuing a signed URL for a direct file upload.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GenerateUploadUrlResponse",
        "slug": "/api/models/schema-oq6h7uersh"
      },
      "operationOwners": [
        {
          "key": "storage:generateUploadUrl",
          "slug": "/api/storage/generate-upload-url",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:generateUploadUrl"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "url",
          "description": "Signed URL used for direct file upload.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fileId",
          "description": "Stable identifier of the stored file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fullPath",
          "description": "Complete object path allocated for the upload.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "requiredHeaders",
          "description": "HTTP headers the client must send with the signed upload request.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_GetFileMetadataRequest",
      "title": "GetFileMetadataRequest",
      "slug": "/api/models/schema-p53284d1sk",
      "description": "Inputs for reading a stored file’s attributes without downloading its content.",
      "semantics": "Inputs for reading a stored file’s attributes without downloading its content.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetFileMetadataRequest",
        "slug": "/api/models/schema-p53284d1sk"
      },
      "operationOwners": [
        {
          "key": "storage:getFileMetadata",
          "slug": "/api/storage/get-file-metadata",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:getFileMetadata"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fileId",
          "description": "Stable identifier of the stored file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_GetFileMetadataResponse",
      "title": "GetFileMetadataResponse",
      "slug": "/api/models/schema-phts99fdui",
      "description": "Result payload for reading a stored file’s attributes without downloading its content.",
      "semantics": "Result payload for reading a stored file’s attributes without downloading its content.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetFileMetadataResponse",
        "slug": "/api/models/schema-phts99fdui"
      },
      "operationOwners": [
        {
          "key": "storage:getFileMetadata",
          "slug": "/api/storage/get-file-metadata",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:getFileMetadata"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "file",
          "description": "Metadata for the file affected or retrieved by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_GetStateRequest",
      "title": "GetStateRequest",
      "slug": "/api/models/schema-p55kmrnq0v",
      "description": "Inputs for reading the file and folder registry state in object storage.",
      "semantics": "Inputs for reading the file and folder registry state in object storage.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetStateRequest",
        "slug": "/api/models/schema-p55kmrnq0v"
      },
      "operationOwners": [
        {
          "key": "storage:getState",
          "slug": "/api/storage/get-state",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:getState"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_GetStateResponse",
      "title": "GetStateResponse",
      "slug": "/api/models/schema-pkb70k899t",
      "description": "Result payload for reading the file and folder registry state in object storage.",
      "semantics": "Result payload for reading the file and folder registry state in object storage.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetStateResponse",
        "slug": "/api/models/schema-pkb70k899t"
      },
      "operationOwners": [
        {
          "key": "storage:getState",
          "slug": "/api/storage/get-state",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:getState"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "state",
          "description": "Current storage state for the effective owner.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_GetStorageQuotaRequest",
      "title": "GetStorageQuotaRequest",
      "slug": "/api/models/schema-p573iadaei",
      "description": "Inputs for reading the user’s allocated capacity and current storage usage.",
      "semantics": "Inputs for reading the user’s allocated capacity and current storage usage.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetStorageQuotaRequest",
        "slug": "/api/models/schema-p573iadaei"
      },
      "operationOwners": [
        {
          "key": "storage:getStorageQuota",
          "slug": "/api/storage/get-storage-quota",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:getStorageQuota"
      ],
      "usedByRoots": [],
      "fields": []
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_GetStorageQuotaResponse",
      "title": "GetStorageQuotaResponse",
      "slug": "/api/models/schema-oq83io3c0d",
      "description": "Result payload for reading the user’s allocated capacity and current storage usage.",
      "semantics": "Result payload for reading the user’s allocated capacity and current storage usage.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "GetStorageQuotaResponse",
        "slug": "/api/models/schema-oq83io3c0d"
      },
      "operationOwners": [
        {
          "key": "storage:getStorageQuota",
          "slug": "/api/storage/get-storage-quota",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:getStorageQuota"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "usedBytes",
          "description": "Storage capacity currently attributed to the user, in bytes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "quotaBytes",
          "description": "Storage capacity allocated to the user, in bytes.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fileCount",
          "description": "Number of files represented by this quota snapshot.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "folderCount",
          "description": "Number of folders represented by the quota snapshot.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "usagePercentage",
          "description": "Storage usage expressed as a percentage of the quota.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_ListFilesRequest",
      "title": "ListFilesRequest",
      "slug": "/api/models/schema-p59vc76k20",
      "description": "Inputs for paging through files and subfolders with metadata filters.",
      "semantics": "Inputs for paging through files and subfolders with metadata filters.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListFilesRequest",
        "slug": "/api/models/schema-p59vc76k20"
      },
      "operationOwners": [
        {
          "key": "storage:listFiles",
          "slug": "/api/storage/list-files",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:listFiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "folderPath",
          "description": "Path of the folder within the user’s storage namespace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "recursive",
          "description": "Whether the operation includes descendant folders and their contents.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageSize",
          "description": "Maximum number of entries requested per page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "pageToken",
          "description": "Continuation token from a preceding page of results.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "filter",
          "description": "Selection criteria applied to the listing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_ListFilesResponse",
      "title": "ListFilesResponse",
      "slug": "/api/models/schema-phvevnc4cr",
      "description": "Result payload for paging through files and subfolders with metadata filters.",
      "semantics": "Result payload for paging through files and subfolders with metadata filters.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "ListFilesResponse",
        "slug": "/api/models/schema-phvevnc4cr"
      },
      "operationOwners": [
        {
          "key": "storage:listFiles",
          "slug": "/api/storage/list-files",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:listFiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "files",
          "description": "File metadata records returned by the listing or search.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "folders",
          "description": "Folder metadata records returned by the listing.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "nextPageToken",
          "description": "Continuation token returned for retrieving the next page.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalCount",
          "description": "Total number of matching entries reported by the operation.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_MoveFileRequest",
      "title": "MoveFileRequest",
      "slug": "/api/models/schema-p5bccu4j82",
      "description": "MoveFileRequest moves/renames a file (identity is the file\\_id; path is a label)",
      "semantics": "MoveFileRequest moves/renames a file (identity is the file\\_id; path is a label)",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MoveFileRequest",
        "slug": "/api/models/schema-p5bccu4j82"
      },
      "operationOwners": [
        {
          "key": "storage:moveFile",
          "slug": "/api/storage/move-file",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:moveFile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fileId",
          "description": "Stable identifier of the stored file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "destinationFolder",
          "description": "Destination folder path for the file move.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "newName",
          "description": "Replacement file name for the moved file. Omit to preserve its current name.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_MoveFileResponse",
      "title": "MoveFileResponse",
      "slug": "/api/models/schema-pi1ihevif9",
      "description": "Result payload for changing a stored file’s folder location and optional name.",
      "semantics": "Result payload for changing a stored file’s folder location and optional name.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "MoveFileResponse",
        "slug": "/api/models/schema-pi1ihevif9"
      },
      "operationOwners": [
        {
          "key": "storage:moveFile",
          "slug": "/api/storage/move-file",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:moveFile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "file",
          "description": "Metadata for the file affected or retrieved by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "moved",
          "description": "Whether the file move operation reports completion.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_RegisterUploadedFileRequest",
      "title": "RegisterUploadedFileRequest",
      "slug": "/api/models/schema-p5ddgcdtr5",
      "description": "RegisterUploadedFileRequest completes the signed-URL upload flow (step 3 of 3): after PUTting bytes to the URL from GenerateUploadUrl, register the object so it becomes visible to ListFiles/GetFileMetadata/GenerateDownloadUrl.",
      "semantics": "RegisterUploadedFileRequest completes the signed-URL upload flow (step 3 of 3): after PUTting bytes to the URL from GenerateUploadUrl, register the object so it becomes visible to ListFiles/GetFileMetadata/GenerateDownloadUrl.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RegisterUploadedFileRequest",
        "slug": "/api/models/schema-p5ddgcdtr5"
      },
      "operationOwners": [
        {
          "key": "storage:registerUploadedFile",
          "slug": "/api/storage/register-uploaded-file",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:registerUploadedFile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fileId",
          "description": "file\\_id returned by GenerateUploadUrl (32 lowercase hex chars). The GCS key is recomputed server-side from the caller-scoped folder\\_path + file\\_id, so a caller can only ever register objects under its own prefix.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "folderPath",
          "description": "Must match the folder\\_path passed to GenerateUploadUrl.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fileName",
          "description": "File name to use within the selected folder.",
          "presence": "implicit",
          "required": true,
          "requestRequired": true
        },
        {
          "name": "metadata",
          "description": "Additional attributes associated with the resource.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Labels associated with the resource for organization or filtering.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_RegisterUploadedFileResponse",
      "title": "RegisterUploadedFileResponse",
      "slug": "/api/models/schema-pi3hqc4gl4",
      "description": "Result payload for recording metadata for a file uploaded directly to storage.",
      "semantics": "Result payload for recording metadata for a file uploaded directly to storage.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "RegisterUploadedFileResponse",
        "slug": "/api/models/schema-pi3hqc4gl4"
      },
      "operationOwners": [
        {
          "key": "storage:registerUploadedFile",
          "slug": "/api/storage/register-uploaded-file",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:registerUploadedFile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "file",
          "description": "Metadata for the file affected or retrieved by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "registered",
          "description": "true when newly registered; false when the file\\_id was already registered (idempotent retry — the existing FileInfo is returned unchanged).",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_SearchFilesRequest",
      "title": "SearchFilesRequest",
      "slug": "/api/models/schema-p5fu4uscol",
      "description": "Inputs for finding stored files by query text and metadata constraints.",
      "semantics": "Inputs for finding stored files by query text and metadata constraints.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SearchFilesRequest",
        "slug": "/api/models/schema-p5fu4uscol"
      },
      "operationOwners": [
        {
          "key": "storage:searchFiles",
          "slug": "/api/storage/search-files",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:searchFiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "query",
          "description": "Search expression used to select matching entries.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "filter",
          "description": "Selection criteria applied to the listing.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "maxResults",
          "description": "Maximum number of file matches requested.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_SearchFilesResponse",
      "title": "SearchFilesResponse",
      "slug": "/api/models/schema-pi5sr97cl8",
      "description": "Result payload for finding stored files by query text and metadata constraints.",
      "semantics": "Result payload for finding stored files by query text and metadata constraints.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "SearchFilesResponse",
        "slug": "/api/models/schema-pi5sr97cl8"
      },
      "operationOwners": [
        {
          "key": "storage:searchFiles",
          "slug": "/api/storage/search-files",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:searchFiles"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "files",
          "description": "File metadata records returned by the listing or search.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "totalMatches",
          "description": "Number of files reported to match the search criteria.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_UpdateFileMetadataRequest",
      "title": "UpdateFileMetadataRequest",
      "slug": "/api/models/schema-p5hgftkm6r",
      "description": "Inputs for changing labels, description, or custom attributes of a stored file.",
      "semantics": "Inputs for changing labels, description, or custom attributes of a stored file.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateFileMetadataRequest",
        "slug": "/api/models/schema-p5hgftkm6r"
      },
      "operationOwners": [
        {
          "key": "storage:updateFileMetadata",
          "slug": "/api/storage/update-file-metadata",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:updateFileMetadata"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "fileId",
          "description": "Stable identifier of the stored file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional attributes associated with the resource.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Labels associated with the resource for organization or filtering.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "description",
          "description": "Human-readable description of the resource.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_UpdateFileMetadataResponse",
      "title": "UpdateFileMetadataResponse",
      "slug": "/api/models/schema-pi74e5ihcs",
      "description": "Result payload for changing labels, description, or custom attributes of a stored file.",
      "semantics": "Result payload for changing labels, description, or custom attributes of a stored file.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UpdateFileMetadataResponse",
        "slug": "/api/models/schema-pi74e5ihcs"
      },
      "operationOwners": [
        {
          "key": "storage:updateFileMetadata",
          "slug": "/api/storage/update-file-metadata",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:updateFileMetadata"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "file",
          "description": "Metadata for the file affected or retrieved by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "updated",
          "description": "Whether the file metadata update reports a change.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_UploadFileRequest",
      "title": "UploadFileRequest",
      "slug": "/api/models/schema-p5jjnfrvuo",
      "description": "Inputs for uploading file content and recording its metadata in the selected folder.",
      "semantics": "Inputs for uploading file content and recording its metadata in the selected folder.",
      "direction": "request",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UploadFileRequest",
        "slug": "/api/models/schema-p5jjnfrvuo"
      },
      "operationOwners": [
        {
          "key": "storage:uploadFile",
          "slug": "/api/storage/upload-file",
          "direction": "request"
        }
      ],
      "usedBy": [
        "storage:uploadFile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "folderPath",
          "description": "Path of the folder within the user’s storage namespace.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "fileName",
          "description": "File name to use within the selected folder.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "content",
          "description": "Raw bytes of the file being uploaded.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "contentType",
          "description": "Media type of the uploaded file.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "metadata",
          "description": "Additional attributes associated with the resource.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "tags",
          "description": "Labels associated with the resource for organization or filtering.",
          "presence": "collection",
          "required": false,
          "requestRequired": false
        }
      ]
    },
    {
      "schemaName": "storage_v1_services_gateway_v1_UploadFileResponse",
      "title": "UploadFileResponse",
      "slug": "/api/models/schema-pi93ja8kcj",
      "description": "Result payload for uploading file content and recording its metadata in the selected folder.",
      "semantics": "Result payload for uploading file content and recording its metadata in the selected folder.",
      "direction": "response",
      "serialization": "json-names",
      "presentation": {
        "domain": "shared",
        "role": "operation-envelope",
        "title": "UploadFileResponse",
        "slug": "/api/models/schema-pi93ja8kcj"
      },
      "operationOwners": [
        {
          "key": "storage:uploadFile",
          "slug": "/api/storage/upload-file",
          "direction": "response"
        }
      ],
      "usedBy": [
        "storage:uploadFile"
      ],
      "usedByRoots": [],
      "fields": [
        {
          "name": "file",
          "description": "Metadata for the file affected or retrieved by the operation.",
          "presence": "message",
          "required": false,
          "requestRequired": false
        },
        {
          "name": "uploaded",
          "description": "Whether the file upload operation reports completion.",
          "presence": "implicit",
          "required": false,
          "requestRequired": false
        }
      ]
    }
  ],
  "examples": [
    {
      "id": "mcp-servers-createCustomMcpServer-request",
      "operationId": "createCustomMcpServer",
      "operationKey": "mcp-servers:createCustomMcpServer",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Register an enabled server without authentication; replace the example endpoint with your reachable MCP endpoint.",
      "payload": {
        "server": {
          "serverId": "product-tools",
          "displayName": "Product tools",
          "endpoint": "https://mcp.example.com/mcp",
          "authType": "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE",
          "enabled": true
        }
      },
      "schemaName": "llm_v1_services_mcp_v1_CreateCustomMCPServerRequest"
    },
    {
      "id": "mcp-servers-createCustomMcpServer-response",
      "operationId": "createCustomMcpServer",
      "operationKey": "mcp-servers:createCustomMcpServer",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "server": {
          "serverId": "example-id",
          "displayName": "example",
          "description": "example",
          "endpoint": "https://example.com/callback",
          "authType": "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE",
          "enabled": true,
          "requestTimeout": "1s",
          "version": "1",
          "createdBy": "example",
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_mcp_v1_CreateCustomMCPServerResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-custom-mcp-servers-02-request",
      "operationId": "createCustomMcpServer",
      "operationKey": "mcp-servers:createCustomMcpServer",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 2. Register the service you want Travila to call. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "server": {
          "serverId": "firecrawl",
          "displayName": "Firecrawl",
          "description": "BYO web scraping MCP",
          "endpoint": "https://mcp.firecrawl.dev/v2/mcp",
          "authType": "CUSTOM_MCP_SERVER_AUTH_TYPE_BEARER",
          "authSecretRef": {
            "name": "firecrawl-api-key"
          },
          "enabled": true,
          "requestTimeout": "30s"
        }
      },
      "schemaName": "llm_v1_services_mcp_v1_CreateCustomMCPServerRequest"
    },
    {
      "id": "mcp-servers-getCustomMcpServer-request",
      "operationId": "getCustomMcpServer",
      "operationKey": "mcp-servers:getCustomMcpServer",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use the unprefixed serverId of a custom server registered in your project.",
      "payload": {
        "serverId": "product-tools"
      },
      "schemaName": "llm_v1_services_mcp_v1_GetCustomMCPServerRequest"
    },
    {
      "id": "mcp-servers-getCustomMcpServer-response",
      "operationId": "getCustomMcpServer",
      "operationKey": "mcp-servers:getCustomMcpServer",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "server": {
          "serverId": "example-id",
          "displayName": "example",
          "description": "example",
          "endpoint": "https://example.com/callback",
          "authType": "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE",
          "enabled": true,
          "requestTimeout": "1s",
          "version": "1",
          "createdBy": "example",
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_mcp_v1_GetCustomMCPServerResponse"
    },
    {
      "id": "mcp-servers-listCustomMcpServers-request",
      "operationId": "listCustomMcpServers",
      "operationKey": "mcp-servers:listCustomMcpServers",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List enabled custom MCP servers in the authenticated project.",
      "payload": {},
      "schemaName": "llm_v1_services_mcp_v1_ListCustomMCPServersRequest"
    },
    {
      "id": "mcp-servers-listCustomMcpServers-response",
      "operationId": "listCustomMcpServers",
      "operationKey": "mcp-servers:listCustomMcpServers",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "servers": [
          {
            "serverId": "example-id",
            "displayName": "example",
            "description": "example",
            "endpoint": "https://example.com/callback",
            "authType": "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE",
            "enabled": true,
            "requestTimeout": "1s",
            "version": "1",
            "createdBy": "example",
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z"
          }
        ],
        "total": 1
      },
      "status": "200",
      "schemaName": "llm_v1_services_mcp_v1_ListCustomMCPServersResponse"
    },
    {
      "id": "mcp-servers-updateCustomMcpServer-request",
      "operationId": "updateCustomMcpServer",
      "operationKey": "mcp-servers:updateCustomMcpServer",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace an existing server configuration; preserve the intended authentication and enabled settings.",
      "payload": {
        "serverId": "product-tools",
        "server": {
          "serverId": "product-tools",
          "displayName": "Product tools",
          "endpoint": "https://mcp.example.com/mcp",
          "authType": "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE",
          "enabled": true
        }
      },
      "schemaName": "llm_v1_services_mcp_v1_UpdateCustomMCPServerRequest"
    },
    {
      "id": "mcp-servers-updateCustomMcpServer-response",
      "operationId": "updateCustomMcpServer",
      "operationKey": "mcp-servers:updateCustomMcpServer",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "server": {
          "serverId": "example-id",
          "displayName": "example",
          "description": "example",
          "endpoint": "https://example.com/callback",
          "authType": "CUSTOM_MCP_SERVER_AUTH_TYPE_NONE",
          "enabled": true,
          "requestTimeout": "1s",
          "version": "1",
          "createdBy": "example",
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_mcp_v1_UpdateCustomMCPServerResponse"
    },
    {
      "id": "mcp-servers-deleteCustomMcpServer-request",
      "operationId": "deleteCustomMcpServer",
      "operationKey": "mcp-servers:deleteCustomMcpServer",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use the unprefixed serverId of a custom server registered in your project.",
      "payload": {
        "serverId": "product-tools"
      },
      "schemaName": "llm_v1_services_mcp_v1_DeleteCustomMCPServerRequest"
    },
    {
      "id": "mcp-servers-deleteCustomMcpServer-response",
      "operationId": "deleteCustomMcpServer",
      "operationKey": "mcp-servers:deleteCustomMcpServer",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deleted": true
      },
      "status": "200",
      "schemaName": "llm_v1_services_mcp_v1_DeleteCustomMCPServerResponse"
    },
    {
      "id": "mcp-servers-testCustomMcpServerConnection-request",
      "operationId": "testCustomMcpServerConnection",
      "operationKey": "mcp-servers:testCustomMcpServerConnection",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use the unprefixed serverId of a custom server registered in your project.",
      "payload": {
        "serverId": "product-tools"
      },
      "schemaName": "llm_v1_services_mcp_v1_TestCustomMCPServerConnectionRequest"
    },
    {
      "id": "mcp-servers-testCustomMcpServerConnection-response",
      "operationId": "testCustomMcpServerConnection",
      "operationKey": "mcp-servers:testCustomMcpServerConnection",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "success": true,
        "toolCount": 1,
        "latencyMs": "1",
        "error": "example"
      },
      "status": "200",
      "schemaName": "llm_v1_services_mcp_v1_TestCustomMCPServerConnectionResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-custom-mcp-servers-03-request",
      "operationId": "testCustomMcpServerConnection",
      "operationKey": "mcp-servers:testCustomMcpServerConnection",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 3. Check the saved connection and choose its tools. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "serverId": "firecrawl"
      },
      "schemaName": "llm_v1_services_mcp_v1_TestCustomMCPServerConnectionRequest"
    },
    {
      "id": "cookbook-integrations-tools-connections-custom-mcp-servers-json-01-response",
      "operationId": "testCustomMcpServerConnection",
      "operationKey": "mcp-servers:testCustomMcpServerConnection",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for 3. Check the saved connection and choose its tools. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "success": true,
        "toolCount": 26,
        "latencyMs": "556"
      },
      "status": "200",
      "schemaName": "llm_v1_services_mcp_v1_TestCustomMCPServerConnectionResponse"
    },
    {
      "id": "scheduled-jobs-createJob-request",
      "operationId": "createJob",
      "operationKey": "scheduled-jobs:createJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schedule a weekday digest while acting on behalf of its owner; replace the target URL with your endpoint.",
      "payload": {
        "name": "Daily digest",
        "scheduleType": "SCHEDULE_TYPE_CRON",
        "cronExpression": "0 9 * * 1-5",
        "timezone": "America/New_York",
        "target": {
          "url": "https://your-api.example.com/jobs/daily-digest",
          "kind": "digest",
          "payload": {
            "report": "daily"
          }
        }
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_CreateJobRequest"
    },
    {
      "id": "scheduled-jobs-createJob-response",
      "operationId": "createJob",
      "operationKey": "scheduled-jobs:createJob",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718",
        "tenantId": "example_123",
        "projectId": "example_123",
        "ownerSubject": "example",
        "name": "example",
        "description": "example",
        "scheduleType": "SCHEDULE_TYPE_CRON",
        "cronExpression": "0 9 * * *",
        "timezone": "example",
        "scheduledAt": "2026-09-16T12:00:00Z",
        "intervalSeconds": 1,
        "target": {
          "url": "https://example.com/callback",
          "method": "example",
          "kind": "example",
          "payload": {
            "example": "value"
          }
        },
        "state": "SCHEDULE_STATUS_ACTIVE",
        "retryPolicy": {
          "maxAttempts": 1,
          "initialBackoffMs": 1,
          "maxBackoffMs": 1
        },
        "metadata": {
          "example": "value"
        },
        "autoPauseThreshold": 1,
        "externalId": "example_123",
        "createdAt": "2026-09-16T12:00:00Z",
        "createdBySubject": "example",
        "updatedAt": "2026-09-16T12:00:00Z",
        "updatedBySubject": "example",
        "pausedAt": "2026-09-16T12:00:00Z",
        "pausedBySubject": "example",
        "pausedReason": "example",
        "resumedAt": "2026-09-16T12:00:00Z",
        "resumedBySubject": "example",
        "deletedAt": "2026-09-16T12:00:00Z",
        "deletedBySubject": "example",
        "lastTriggeredAt": "2026-09-16T12:00:00Z",
        "nextTriggerAt": "2026-09-16T12:00:00Z",
        "triggerCount": "1",
        "failureCount": "1",
        "consecutiveFailureCount": "1"
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_Schedule"
    },
    {
      "id": "cookbook-core-platform-scheduling-build-scheduled-agents-02-request",
      "operationId": "createJob",
      "operationKey": "scheduled-jobs:createJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 4: Create the schedule. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "Daily agent briefing",
        "scheduleType": "SCHEDULE_TYPE_CRON",
        "cronExpression": "0 9 * * 1-5",
        "timezone": "America/New_York",
        "target": {
          "url": "https://api.example.com/hooks/scheduled-agent",
          "kind": "agent-briefing",
          "payload": {
            "task": "daily-briefing"
          }
        }
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_CreateJobRequest"
    },
    {
      "id": "cookbook-core-platform-scheduling-creating-02-request",
      "operationId": "createJob",
      "operationKey": "scheduled-jobs:createJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: remind the user once at a chosen time. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "Send welcome email",
        "scheduleType": "SCHEDULE_TYPE_ONCE",
        "scheduledAt": "2026-10-10T14:00:00Z",
        "target": {
          "url": "https://your-api.example.com/jobs/welcome",
          "kind": "notification",
          "payload": {
            "user_id": "usr_abc123"
          }
        }
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_CreateJobRequest"
    },
    {
      "id": "cookbook-core-platform-scheduling-creating-03-request",
      "operationId": "createJob",
      "operationKey": "scheduled-jobs:createJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: refresh application data every few minutes. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "Sync cache",
        "scheduleType": "SCHEDULE_TYPE_RECURRING_INTERVAL",
        "intervalSeconds": 300,
        "target": {
          "url": "https://your-api.example.com/jobs/cache-sync",
          "kind": "maintenance"
        }
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_CreateJobRequest"
    },
    {
      "id": "cookbook-core-platform-scheduling-execution-02-request",
      "operationId": "createJob",
      "operationKey": "scheduled-jobs:createJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recover a temporary receiver failure. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "Critical alert",
        "scheduleType": "SCHEDULE_TYPE_CRON",
        "cronExpression": "*/5 * * * *",
        "target": {
          "url": "https://your-api.example.com/jobs/alert",
          "kind": "alert"
        },
        "retryPolicy": {
          "maxAttempts": 3,
          "initialBackoffMs": 1000,
          "maxBackoffMs": 10000
        }
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_CreateJobRequest"
    },
    {
      "id": "cookbook-core-platform-scheduling-managing-08-request",
      "operationId": "createJob",
      "operationKey": "scheduled-jobs:createJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: use your application’s reminder identifier. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "Daily digest",
        "scheduleType": "SCHEDULE_TYPE_CRON",
        "cronExpression": "0 9 * * 1-5",
        "externalId": "user-42-daily-digest",
        "target": {
          "url": "https://your-api.example.com/jobs/daily-digest",
          "kind": "digest"
        }
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_CreateJobRequest"
    },
    {
      "id": "cookbook-core-platform-scheduling-build-scheduled-agents-json-03-response",
      "operationId": "createJob",
      "operationKey": "scheduled-jobs:createJob",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 4: Create the schedule. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718",
        "name": "Daily agent briefing",
        "state": "SCHEDULE_STATUS_ACTIVE",
        "scheduleType": "SCHEDULE_TYPE_CRON",
        "cronExpression": "0 9 * * 1-5",
        "timezone": "America/New_York",
        "nextTriggerAt": "2026-06-04T13:00:00Z",
        "createdAt": "2026-06-03T14:00:00Z"
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_Schedule"
    },
    {
      "id": "cookbook-core-platform-scheduling-creating-json-01-response",
      "operationId": "createJob",
      "operationKey": "scheduled-jobs:createJob",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Confirm and save the next scheduled time. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718",
        "name": "Daily digest",
        "state": "SCHEDULE_STATUS_ACTIVE",
        "scheduleType": "SCHEDULE_TYPE_CRON",
        "cronExpression": "0 9 * * 1-5",
        "timezone": "America/New_York",
        "nextTriggerAt": "2026-06-04T13:00:00Z",
        "createdAt": "2026-06-03T14:00:00Z"
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_Schedule"
    },
    {
      "id": "scheduled-jobs-getJob-request",
      "operationId": "getJob",
      "operationKey": "scheduled-jobs:getJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace scheduleId with the ID returned when the job was created.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_GetJobRequest"
    },
    {
      "id": "scheduled-jobs-getJob-response",
      "operationId": "getJob",
      "operationKey": "scheduled-jobs:getJob",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718",
        "tenantId": "example_123",
        "projectId": "example_123",
        "ownerSubject": "example",
        "name": "example",
        "description": "example",
        "scheduleType": "SCHEDULE_TYPE_CRON",
        "cronExpression": "0 9 * * *",
        "timezone": "example",
        "scheduledAt": "2026-09-16T12:00:00Z",
        "intervalSeconds": 1,
        "target": {
          "url": "https://example.com/callback",
          "method": "example",
          "kind": "example",
          "payload": {
            "example": "value"
          }
        },
        "state": "SCHEDULE_STATUS_ACTIVE",
        "retryPolicy": {
          "maxAttempts": 1,
          "initialBackoffMs": 1,
          "maxBackoffMs": 1
        },
        "metadata": {
          "example": "value"
        },
        "autoPauseThreshold": 1,
        "externalId": "example_123",
        "createdAt": "2026-09-16T12:00:00Z",
        "createdBySubject": "example",
        "updatedAt": "2026-09-16T12:00:00Z",
        "updatedBySubject": "example",
        "pausedAt": "2026-09-16T12:00:00Z",
        "pausedBySubject": "example",
        "pausedReason": "example",
        "resumedAt": "2026-09-16T12:00:00Z",
        "resumedBySubject": "example",
        "deletedAt": "2026-09-16T12:00:00Z",
        "deletedBySubject": "example",
        "lastTriggeredAt": "2026-09-16T12:00:00Z",
        "nextTriggerAt": "2026-09-16T12:00:00Z",
        "triggerCount": "1",
        "failureCount": "1",
        "consecutiveFailureCount": "1"
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_Schedule"
    },
    {
      "id": "cookbook-core-platform-scheduling-managing-01-request",
      "operationId": "getJob",
      "operationKey": "scheduled-jobs:getJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 1. Load the reminder being changed. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_GetJobRequest"
    },
    {
      "id": "cookbook-core-platform-scheduling-managing-09-request",
      "operationId": "getJob",
      "operationKey": "scheduled-jobs:getJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: use your application’s reminder identifier. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "externalId": "user-42-daily-digest"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_GetJobRequest"
    },
    {
      "id": "scheduled-jobs-listJobs-request",
      "operationId": "listJobs",
      "operationKey": "scheduled-jobs:listJobs",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List jobs visible in the authenticated scope with default paging.",
      "payload": {},
      "schemaName": "platform_v1_services_scheduler_gateway_v1_ListJobsRequest"
    },
    {
      "id": "scheduled-jobs-listJobs-response",
      "operationId": "listJobs",
      "operationKey": "scheduled-jobs:listJobs",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "schedules": [
          {
            "scheduleId": "sched_a1b2c3d4e5f60718",
            "tenantId": "example_123",
            "projectId": "example_123",
            "ownerSubject": "example",
            "name": "example",
            "description": "example",
            "scheduleType": "SCHEDULE_TYPE_CRON",
            "cronExpression": "0 9 * * *",
            "timezone": "example",
            "scheduledAt": "2026-09-16T12:00:00Z",
            "intervalSeconds": 1,
            "target": {
              "url": "https://example.com/callback",
              "method": "example",
              "kind": "example"
            },
            "state": "SCHEDULE_STATUS_ACTIVE",
            "retryPolicy": {
              "maxAttempts": 1,
              "initialBackoffMs": 1,
              "maxBackoffMs": 1
            },
            "metadata": {
              "example": "value"
            },
            "autoPauseThreshold": 1,
            "externalId": "example_123",
            "createdAt": "2026-09-16T12:00:00Z",
            "createdBySubject": "example",
            "updatedAt": "2026-09-16T12:00:00Z",
            "updatedBySubject": "example",
            "pausedAt": "2026-09-16T12:00:00Z",
            "pausedBySubject": "example",
            "pausedReason": "example",
            "resumedAt": "2026-09-16T12:00:00Z",
            "resumedBySubject": "example",
            "deletedAt": "2026-09-16T12:00:00Z",
            "deletedBySubject": "example",
            "lastTriggeredAt": "2026-09-16T12:00:00Z",
            "nextTriggerAt": "2026-09-16T12:00:00Z",
            "triggerCount": "1",
            "failureCount": "1",
            "consecutiveFailureCount": "1"
          }
        ],
        "nextPageToken": "example",
        "totalCount": 1
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_ListJobsResponse"
    },
    {
      "id": "cookbook-core-platform-scheduling-managing-02-request",
      "operationId": "listJobs",
      "operationKey": "scheduled-jobs:listJobs",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: show the user’s reminder list. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "pageSize": 20,
        "stateFilter": "SCHEDULE_STATUS_ACTIVE"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_ListJobsRequest"
    },
    {
      "id": "scheduled-jobs-updateJob-request",
      "operationId": "updateJob",
      "operationKey": "scheduled-jobs:updateJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Rename an existing job using its returned scheduleId.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718",
        "name": "Weekday morning digest"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_UpdateJobRequest"
    },
    {
      "id": "scheduled-jobs-updateJob-response",
      "operationId": "updateJob",
      "operationKey": "scheduled-jobs:updateJob",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "schedule": {
          "scheduleId": "sched_a1b2c3d4e5f60718",
          "tenantId": "example_123",
          "projectId": "example_123",
          "ownerSubject": "example",
          "name": "example",
          "description": "example",
          "scheduleType": "SCHEDULE_TYPE_CRON",
          "cronExpression": "0 9 * * *",
          "timezone": "example",
          "scheduledAt": "2026-09-16T12:00:00Z",
          "intervalSeconds": 1,
          "target": {
            "url": "https://example.com/callback",
            "method": "example",
            "kind": "example"
          },
          "state": "SCHEDULE_STATUS_ACTIVE",
          "retryPolicy": {
            "maxAttempts": 1,
            "initialBackoffMs": 1,
            "maxBackoffMs": 1
          },
          "metadata": {
            "example": "value"
          },
          "autoPauseThreshold": 1,
          "externalId": "example_123",
          "createdAt": "2026-09-16T12:00:00Z",
          "createdBySubject": "example",
          "updatedAt": "2026-09-16T12:00:00Z",
          "updatedBySubject": "example",
          "pausedAt": "2026-09-16T12:00:00Z",
          "pausedBySubject": "example",
          "pausedReason": "example",
          "resumedAt": "2026-09-16T12:00:00Z",
          "resumedBySubject": "example",
          "deletedAt": "2026-09-16T12:00:00Z",
          "deletedBySubject": "example",
          "lastTriggeredAt": "2026-09-16T12:00:00Z",
          "nextTriggerAt": "2026-09-16T12:00:00Z",
          "triggerCount": "1",
          "failureCount": "1",
          "consecutiveFailureCount": "1"
        },
        "effectiveAt": "example"
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_UpdateJobResponse"
    },
    {
      "id": "cookbook-core-platform-scheduling-managing-03-request",
      "operationId": "updateJob",
      "operationKey": "scheduled-jobs:updateJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 2. Save a new delivery time. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718",
        "cronExpression": "0 10 * * 1-5"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_UpdateJobRequest"
    },
    {
      "id": "scheduled-jobs-pauseJob-request",
      "operationId": "pauseJob",
      "operationKey": "scheduled-jobs:pauseJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace scheduleId with the ID returned when the job was created.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_PauseJobRequest"
    },
    {
      "id": "scheduled-jobs-pauseJob-response",
      "operationId": "pauseJob",
      "operationKey": "scheduled-jobs:pauseJob",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718",
        "tenantId": "example_123",
        "projectId": "example_123",
        "ownerSubject": "example",
        "name": "example",
        "description": "example",
        "scheduleType": "SCHEDULE_TYPE_CRON",
        "cronExpression": "0 9 * * *",
        "timezone": "example",
        "scheduledAt": "2026-09-16T12:00:00Z",
        "intervalSeconds": 1,
        "target": {
          "url": "https://example.com/callback",
          "method": "example",
          "kind": "example",
          "payload": {
            "example": "value"
          }
        },
        "state": "SCHEDULE_STATUS_ACTIVE",
        "retryPolicy": {
          "maxAttempts": 1,
          "initialBackoffMs": 1,
          "maxBackoffMs": 1
        },
        "metadata": {
          "example": "value"
        },
        "autoPauseThreshold": 1,
        "externalId": "example_123",
        "createdAt": "2026-09-16T12:00:00Z",
        "createdBySubject": "example",
        "updatedAt": "2026-09-16T12:00:00Z",
        "updatedBySubject": "example",
        "pausedAt": "2026-09-16T12:00:00Z",
        "pausedBySubject": "example",
        "pausedReason": "example",
        "resumedAt": "2026-09-16T12:00:00Z",
        "resumedBySubject": "example",
        "deletedAt": "2026-09-16T12:00:00Z",
        "deletedBySubject": "example",
        "lastTriggeredAt": "2026-09-16T12:00:00Z",
        "nextTriggerAt": "2026-09-16T12:00:00Z",
        "triggerCount": "1",
        "failureCount": "1",
        "consecutiveFailureCount": "1"
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_Schedule"
    },
    {
      "id": "cookbook-core-platform-scheduling-managing-04-1-request",
      "operationId": "pauseJob",
      "operationKey": "scheduled-jobs:pauseJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 3. Let the user take a temporary break. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718",
        "reason": "Target service under maintenance"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_PauseJobRequest"
    },
    {
      "id": "scheduled-jobs-resumeJob-request",
      "operationId": "resumeJob",
      "operationKey": "scheduled-jobs:resumeJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace scheduleId with the ID returned when the job was created.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_ResumeJobRequest"
    },
    {
      "id": "scheduled-jobs-resumeJob-response",
      "operationId": "resumeJob",
      "operationKey": "scheduled-jobs:resumeJob",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718",
        "tenantId": "example_123",
        "projectId": "example_123",
        "ownerSubject": "example",
        "name": "example",
        "description": "example",
        "scheduleType": "SCHEDULE_TYPE_CRON",
        "cronExpression": "0 9 * * *",
        "timezone": "example",
        "scheduledAt": "2026-09-16T12:00:00Z",
        "intervalSeconds": 1,
        "target": {
          "url": "https://example.com/callback",
          "method": "example",
          "kind": "example",
          "payload": {
            "example": "value"
          }
        },
        "state": "SCHEDULE_STATUS_ACTIVE",
        "retryPolicy": {
          "maxAttempts": 1,
          "initialBackoffMs": 1,
          "maxBackoffMs": 1
        },
        "metadata": {
          "example": "value"
        },
        "autoPauseThreshold": 1,
        "externalId": "example_123",
        "createdAt": "2026-09-16T12:00:00Z",
        "createdBySubject": "example",
        "updatedAt": "2026-09-16T12:00:00Z",
        "updatedBySubject": "example",
        "pausedAt": "2026-09-16T12:00:00Z",
        "pausedBySubject": "example",
        "pausedReason": "example",
        "resumedAt": "2026-09-16T12:00:00Z",
        "resumedBySubject": "example",
        "deletedAt": "2026-09-16T12:00:00Z",
        "deletedBySubject": "example",
        "lastTriggeredAt": "2026-09-16T12:00:00Z",
        "nextTriggerAt": "2026-09-16T12:00:00Z",
        "triggerCount": "1",
        "failureCount": "1",
        "consecutiveFailureCount": "1"
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_Schedule"
    },
    {
      "id": "cookbook-core-platform-scheduling-managing-04-2-request",
      "operationId": "resumeJob",
      "operationKey": "scheduled-jobs:resumeJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 3. Let the user take a temporary break. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_ResumeJobRequest"
    },
    {
      "id": "scheduled-jobs-deleteJob-request",
      "operationId": "deleteJob",
      "operationKey": "scheduled-jobs:deleteJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace scheduleId with the ID returned when the job was created.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_DeleteJobRequest"
    },
    {
      "id": "scheduled-jobs-deleteJob-response",
      "operationId": "deleteJob",
      "operationKey": "scheduled-jobs:deleteJob",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718"
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_DeleteJobResponse"
    },
    {
      "id": "cookbook-core-platform-scheduling-managing-05-request",
      "operationId": "deleteJob",
      "operationKey": "scheduled-jobs:deleteJob",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 4. Remove this reminder. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_DeleteJobRequest"
    },
    {
      "id": "scheduled-jobs-deleteJobsForProject-request",
      "operationId": "deleteJobsForProject",
      "operationKey": "scheduled-jobs:deleteJobsForProject",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Delete all jobs in the authenticated project; this operation has no per-job selector.",
      "payload": {},
      "schemaName": "platform_v1_services_scheduler_gateway_v1_DeleteJobsForProjectRequest"
    },
    {
      "id": "scheduled-jobs-deleteJobsForProject-response",
      "operationId": "deleteJobsForProject",
      "operationKey": "scheduled-jobs:deleteJobsForProject",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deletedCount": 1
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_DeleteJobsForProjectResponse"
    },
    {
      "id": "cookbook-core-platform-scheduling-managing-json-02-response",
      "operationId": "deleteJobsForProject",
      "operationKey": "scheduled-jobs:deleteJobsForProject",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Project teardown: remove schedules across all owners. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "deletedCount": 47
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_DeleteJobsForProjectResponse"
    },
    {
      "id": "scheduled-jobs-deleteJobsForOwner-request",
      "operationId": "deleteJobsForOwner",
      "operationKey": "scheduled-jobs:deleteJobsForOwner",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Delete all jobs owned by the authenticated end user in the current project.",
      "payload": {},
      "schemaName": "platform_v1_services_scheduler_gateway_v1_DeleteJobsForOwnerRequest"
    },
    {
      "id": "scheduled-jobs-deleteJobsForOwner-response",
      "operationId": "deleteJobsForOwner",
      "operationKey": "scheduled-jobs:deleteJobsForOwner",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deletedCount": 1
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_DeleteJobsForOwnerResponse"
    },
    {
      "id": "cookbook-core-platform-scheduling-managing-json-01-response",
      "operationId": "deleteJobsForOwner",
      "operationKey": "scheduled-jobs:deleteJobsForOwner",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Account cleanup: remove all of the user’s schedules. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "deletedCount": 3
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_DeleteJobsForOwnerResponse"
    },
    {
      "id": "scheduled-jobs-listExecutions-request",
      "operationId": "listExecutions",
      "operationKey": "scheduled-jobs:listExecutions",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace scheduleId with the ID returned when the job was created.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_ListExecutionsRequest"
    },
    {
      "id": "scheduled-jobs-listExecutions-response",
      "operationId": "listExecutions",
      "operationKey": "scheduled-jobs:listExecutions",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "executions": [
          {
            "executionId": "1",
            "scheduleId": "sched_a1b2c3d4e5f60718",
            "tenantId": "example_123",
            "projectId": "example_123",
            "scheduledTime": "2026-09-16T12:00:00Z",
            "startedAt": "2026-09-16T12:00:00Z",
            "completedAt": "2026-09-16T12:00:00Z",
            "status": "EXECUTION_STATUS_COMPLETED",
            "httpStatus": 1,
            "attempt": 1,
            "durationMs": 1,
            "targetKind": "example",
            "error": "example",
            "responseBody": "example",
            "responseHeaders": {},
            "responseTruncated": true,
            "responseSizeBytes": 1,
            "endReason": "example"
          }
        ],
        "nextPageToken": "example"
      },
      "status": "200",
      "schemaName": "platform_v1_services_scheduler_v1_ListExecutionsResponse"
    },
    {
      "id": "cookbook-core-platform-scheduling-execution-01-request",
      "operationId": "listExecutions",
      "operationKey": "scheduled-jobs:listExecutions",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Find where the missing digest stopped. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "scheduleId": "sched_a1b2c3d4e5f60718",
        "pageSize": 20,
        "statusFilter": "EXECUTION_STATUS_FAILED"
      },
      "schemaName": "platform_v1_services_scheduler_gateway_v1_ListExecutionsRequest"
    },
    {
      "id": "evals-listTraces-request",
      "operationId": "listTraces",
      "operationKey": "evals:listTraces",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {},
      "schemaName": "platform_v1_services_eval_gateway_v1_ListTracesRequest"
    },
    {
      "id": "evals-listTraces-response",
      "operationId": "listTraces",
      "operationKey": "evals:listTraces",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "traces": [
          {
            "traceId": "example_123",
            "name": "example",
            "timestamp": "2026-09-16T12:00:00Z",
            "inputJson": "{}",
            "outputJson": "{}",
            "latencySeconds": 1,
            "totalCost": 1,
            "environment": "example",
            "tags": [
              "example"
            ],
            "metadataJson": "{}",
            "bookmarked": true,
            "version": "example",
            "release": "example",
            "userId": "example_123",
            "sessionId": "example_123",
            "observationCount": 1,
            "conversationId": "example_123",
            "sourceUserMessageId": "example_123",
            "profileId": "example_123",
            "configHash": "example",
            "inputTokens": "1",
            "outputTokens": "1",
            "totalTokens": "1",
            "errorCount": 1,
            "warningCount": 1,
            "defaultCount": 1,
            "debugCount": 1,
            "scores": [
              {
                "scoreId": "example_123",
                "targetType": "EVAL_TARGET_TYPE_TRACE",
                "targetId": "example_123",
                "name": "example",
                "dataType": "SCORE_DATA_TYPE_NUMERIC",
                "numericValue": 1,
                "stringValue": "example",
                "booleanValue": true,
                "source": "SCORE_SOURCE_JUDGE",
                "comment": "example",
                "textValue": "Example text",
                "authorUserId": "example_123",
                "configId": "example_123",
                "queueId": "example_123",
                "traceId": "example_123",
                "observationId": "example_123",
                "sessionId": "example_123",
                "datasetRunId": "example_123",
                "environment": "example",
                "metadataJson": "{}",
                "traceName": "example",
                "userId": "example_123",
                "sourceLabel": "example",
                "conversationId": "example_123",
                "messageId": "example_123",
                "messageSequence": "1",
                "profileId": "example_123",
                "configHash": "example"
              }
            ],
            "commentCount": 1
          }
        ],
        "contentRedacted": true,
        "cursorPage": {
          "nextCursor": "example",
          "limit": 1,
          "totalItems": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListTracesResponse"
    },
    {
      "id": "cookbook-insights-evaluation-reading-01-request",
      "operationId": "listTraces",
      "operationKey": "evals:listTraces",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Find the reply the customer reported. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profileId": "nutrition_coach",
        "fromTime": "2026-08-01T00:00:00Z",
        "toTime": "2026-08-14T00:00:00Z",
        "pageSize": 25
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_ListTracesRequest"
    },
    {
      "id": "evals-getTrace-request",
      "operationId": "getTrace",
      "operationKey": "evals:getTrace",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "traceId": "trace_123"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_GetTraceRequest"
    },
    {
      "id": "evals-getTrace-response",
      "operationId": "getTrace",
      "operationKey": "evals:getTrace",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "trace": {
          "summary": {
            "traceId": "example_123",
            "name": "example",
            "inputJson": "{}",
            "outputJson": "{}",
            "latencySeconds": 1,
            "totalCost": 1,
            "environment": "example",
            "tags": [
              "example"
            ],
            "metadataJson": "{}",
            "bookmarked": true,
            "version": "example",
            "release": "example",
            "userId": "example_123",
            "sessionId": "example_123",
            "observationCount": 1,
            "conversationId": "example_123",
            "sourceUserMessageId": "example_123",
            "profileId": "example_123",
            "configHash": "example",
            "inputTokens": "1",
            "outputTokens": "1",
            "totalTokens": "1",
            "errorCount": 1,
            "warningCount": 1,
            "defaultCount": 1,
            "debugCount": 1,
            "commentCount": 1
          },
          "observations": [
            {
              "observationId": "example_123",
              "traceId": "example_123",
              "parentObservationId": "example_123",
              "type": "OBSERVATION_TYPE_SPAN",
              "name": "example",
              "level": "OBSERVATION_LEVEL_DEBUG",
              "statusMessage": "example",
              "latencySeconds": 1,
              "inputJson": "{}",
              "outputJson": "{}",
              "metadataJson": "{}",
              "model": "example",
              "modelParametersJson": "{}",
              "inputTokens": "1",
              "outputTokens": "1",
              "totalTokens": "1",
              "inputCost": 1,
              "outputCost": 1,
              "totalCost": 1,
              "environment": "example",
              "version": "example",
              "promptName": "Example text",
              "promptVersion": 1,
              "commentCount": 1,
              "conversationId": "example_123",
              "sourceUserMessageId": "example_123",
              "profileId": "example_123",
              "configHash": "example"
            }
          ],
          "scores": [
            {
              "scoreId": "example_123",
              "targetType": "EVAL_TARGET_TYPE_TRACE",
              "targetId": "example_123",
              "name": "example",
              "dataType": "SCORE_DATA_TYPE_NUMERIC",
              "numericValue": 1,
              "stringValue": "example",
              "booleanValue": true,
              "source": "SCORE_SOURCE_JUDGE",
              "comment": "example",
              "textValue": "Example text",
              "authorUserId": "example_123",
              "configId": "example_123",
              "queueId": "example_123",
              "traceId": "example_123",
              "observationId": "example_123",
              "sessionId": "example_123",
              "datasetRunId": "example_123",
              "environment": "example",
              "metadataJson": "{}",
              "traceName": "example",
              "userId": "example_123",
              "sourceLabel": "example",
              "conversationId": "example_123",
              "messageId": "example_123",
              "messageSequence": "1",
              "profileId": "example_123",
              "configHash": "example"
            }
          ]
        },
        "contentRedacted": true
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_GetTraceResponse"
    },
    {
      "id": "cookbook-insights-evaluation-reading-02-request",
      "operationId": "getTrace",
      "operationKey": "evals:getTrace",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Locate the slow or failed step. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationId": "conv_123",
        "sourceUserMessageId": "msg_abc"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_GetTraceRequest"
    },
    {
      "id": "evals-listObservations-request",
      "operationId": "listObservations",
      "operationKey": "evals:listObservations",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {},
      "schemaName": "platform_v1_services_eval_gateway_v1_ListObservationsRequest"
    },
    {
      "id": "evals-listObservations-response",
      "operationId": "listObservations",
      "operationKey": "evals:listObservations",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "observations": [
          {
            "observationId": "example_123",
            "traceId": "example_123",
            "parentObservationId": "example_123",
            "type": "OBSERVATION_TYPE_SPAN",
            "name": "example",
            "level": "OBSERVATION_LEVEL_DEBUG",
            "statusMessage": "example",
            "startTime": "2026-09-16T12:00:00Z",
            "endTime": "2026-09-16T12:00:00Z",
            "completionStartTime": "2026-09-16T12:00:00Z",
            "latencySeconds": 1,
            "inputJson": "{}",
            "outputJson": "{}",
            "metadataJson": "{}",
            "model": "example",
            "modelParametersJson": "{}",
            "inputTokens": "1",
            "outputTokens": "1",
            "totalTokens": "1",
            "inputCost": 1,
            "outputCost": 1,
            "totalCost": 1,
            "environment": "example",
            "version": "example",
            "promptName": "Example text",
            "promptVersion": 1,
            "scores": [
              {
                "scoreId": "example_123",
                "targetType": "EVAL_TARGET_TYPE_TRACE",
                "targetId": "example_123",
                "name": "example",
                "dataType": "SCORE_DATA_TYPE_NUMERIC",
                "numericValue": 1,
                "stringValue": "example",
                "booleanValue": true,
                "source": "SCORE_SOURCE_JUDGE",
                "comment": "example",
                "textValue": "Example text",
                "authorUserId": "example_123",
                "configId": "example_123",
                "queueId": "example_123",
                "traceId": "example_123",
                "observationId": "example_123",
                "sessionId": "example_123",
                "datasetRunId": "example_123",
                "environment": "example",
                "metadataJson": "{}",
                "traceName": "example",
                "userId": "example_123",
                "sourceLabel": "example",
                "conversationId": "example_123",
                "messageId": "example_123",
                "messageSequence": "1",
                "profileId": "example_123",
                "configHash": "example"
              }
            ],
            "commentCount": 1,
            "conversationId": "example_123",
            "sourceUserMessageId": "example_123",
            "profileId": "example_123",
            "configHash": "example"
          }
        ],
        "contentRedacted": true,
        "cursorPage": {
          "nextCursor": "example",
          "limit": 1,
          "totalItems": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListObservationsResponse"
    },
    {
      "id": "cookbook-insights-evaluation-reading-04-request",
      "operationId": "listObservations",
      "operationKey": "evals:listObservations",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Check whether the same tool keeps failing. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "filters": [
          {
            "column": "level",
            "operator": "=",
            "type": "EVAL_FILTER_TYPE_STRING",
            "stringValue": "ERROR"
          }
        ],
        "pageSize": 50
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_ListObservationsRequest"
    },
    {
      "id": "cookbook-insights-evaluation-reading-json-02-response",
      "operationId": "listObservations",
      "operationKey": "evals:listObservations",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Check whether the same tool keeps failing. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "observations": [
          {
            "observationId": "obs_9",
            "traceId": "trc_a1b2c3",
            "parentObservationId": "obs_2",
            "name": "get_weather",
            "level": "OBSERVATION_LEVEL_ERROR",
            "statusMessage": "upstream timeout",
            "latencySeconds": 30
          }
        ],
        "cursorPage": {
          "limit": 50
        },
        "contentRedacted": true
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListObservationsResponse"
    },
    {
      "id": "evals-listSessions-request",
      "operationId": "listSessions",
      "operationKey": "evals:listSessions",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {},
      "schemaName": "platform_v1_services_eval_gateway_v1_ListSessionsRequest"
    },
    {
      "id": "evals-listSessions-response",
      "operationId": "listSessions",
      "operationKey": "evals:listSessions",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "sessions": [
          {
            "sessionId": "example_123",
            "createdAt": "2026-09-16T12:00:00Z",
            "durationSeconds": 1,
            "environment": "example",
            "userIds": [
              "example_123"
            ],
            "traceCount": 1,
            "totalCost": 1,
            "inputTokens": "1",
            "outputTokens": "1",
            "totalTokens": "1",
            "traceTags": [
              "example"
            ],
            "scores": [
              {
                "scoreId": "example_123",
                "targetType": "EVAL_TARGET_TYPE_TRACE",
                "targetId": "example_123",
                "name": "example",
                "dataType": "SCORE_DATA_TYPE_NUMERIC",
                "numericValue": 1,
                "stringValue": "example",
                "booleanValue": true,
                "source": "SCORE_SOURCE_JUDGE",
                "comment": "example",
                "textValue": "Example text",
                "authorUserId": "example_123",
                "configId": "example_123",
                "queueId": "example_123",
                "traceId": "example_123",
                "observationId": "example_123",
                "sessionId": "example_123",
                "datasetRunId": "example_123",
                "environment": "example",
                "metadataJson": "{}",
                "traceName": "example",
                "userId": "example_123",
                "sourceLabel": "example",
                "conversationId": "example_123",
                "messageId": "example_123",
                "messageSequence": "1",
                "profileId": "example_123",
                "configHash": "example"
              }
            ],
            "commentCount": 1,
            "metadataJson": "{}",
            "bookmarked": true,
            "conversationIds": [
              "example_123"
            ]
          }
        ],
        "cursorPage": {
          "nextCursor": "example",
          "limit": 1,
          "totalItems": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListSessionsResponse"
    },
    {
      "id": "evals-getSession-request",
      "operationId": "getSession",
      "operationKey": "evals:getSession",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "sessionId": "example_123"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_GetSessionRequest"
    },
    {
      "id": "evals-getSession-response",
      "operationId": "getSession",
      "operationKey": "evals:getSession",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "session": {
          "summary": {
            "sessionId": "example_123",
            "durationSeconds": 1,
            "environment": "example",
            "userIds": [
              "example_123"
            ],
            "traceCount": 1,
            "totalCost": 1,
            "inputTokens": "1",
            "outputTokens": "1",
            "totalTokens": "1",
            "traceTags": [
              "example"
            ],
            "commentCount": 1,
            "metadataJson": "{}",
            "bookmarked": true,
            "conversationIds": [
              "example_123"
            ]
          },
          "traces": [
            {
              "traceId": "example_123",
              "name": "example",
              "inputJson": "{}",
              "outputJson": "{}",
              "latencySeconds": 1,
              "totalCost": 1,
              "environment": "example",
              "tags": [
                "example"
              ],
              "metadataJson": "{}",
              "bookmarked": true,
              "version": "example",
              "release": "example",
              "userId": "example_123",
              "sessionId": "example_123",
              "observationCount": 1,
              "conversationId": "example_123",
              "sourceUserMessageId": "example_123",
              "profileId": "example_123",
              "configHash": "example",
              "inputTokens": "1",
              "outputTokens": "1",
              "totalTokens": "1",
              "errorCount": 1,
              "warningCount": 1,
              "defaultCount": 1,
              "debugCount": 1,
              "commentCount": 1
            }
          ]
        },
        "contentRedacted": true
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_GetSessionResponse"
    },
    {
      "id": "evals-listScores-request",
      "operationId": "listScores",
      "operationKey": "evals:listScores",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {},
      "schemaName": "platform_v1_services_eval_gateway_v1_ListScoresRequest"
    },
    {
      "id": "evals-listScores-response",
      "operationId": "listScores",
      "operationKey": "evals:listScores",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "scores": [
          {
            "scoreId": "example_123",
            "targetType": "EVAL_TARGET_TYPE_TRACE",
            "targetId": "example_123",
            "name": "example",
            "dataType": "SCORE_DATA_TYPE_NUMERIC",
            "numericValue": 1,
            "stringValue": "example",
            "booleanValue": true,
            "source": "SCORE_SOURCE_JUDGE",
            "comment": "example",
            "createdAt": "2026-09-16T12:00:00Z",
            "textValue": "Example text",
            "authorUserId": "example_123",
            "configId": "example_123",
            "queueId": "example_123",
            "traceId": "example_123",
            "observationId": "example_123",
            "sessionId": "example_123",
            "datasetRunId": "example_123",
            "environment": "example",
            "metadataJson": "{}",
            "updatedAt": "2026-09-16T12:00:00Z",
            "timestamp": "2026-09-16T12:00:00Z",
            "traceName": "example",
            "userId": "example_123",
            "sourceLabel": "example",
            "conversationId": "example_123",
            "messageId": "example_123",
            "messageSequence": "1",
            "profileId": "example_123",
            "configHash": "example"
          }
        ],
        "filterNarrowed": true,
        "cursorPage": {
          "nextCursor": "example",
          "limit": 1,
          "totalItems": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListScoresResponse"
    },
    {
      "id": "cookbook-insights-evaluation-reading-03-request",
      "operationId": "listScores",
      "operationKey": "evals:listScores",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Read judgments about that same reply. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationId": "conv_123",
        "dataType": "SCORE_DATA_TYPE_NUMERIC",
        "pageSize": 50
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_ListScoresRequest"
    },
    {
      "id": "cookbook-insights-evaluation-reading-json-01-response",
      "operationId": "listScores",
      "operationKey": "evals:listScores",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Read judgments about that same reply. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "scores": [
          {
            "scoreId": "scr_7788",
            "name": "helpfulness",
            "dataType": "SCORE_DATA_TYPE_NUMERIC",
            "numericValue": 4,
            "source": "SCORE_SOURCE_HUMAN",
            "authorUserId": "reviewer_9",
            "configId": "cfg_help",
            "traceId": "trc_a1b2c3",
            "createdAt": "2026-08-12T16:20:00Z",
            "comment": "Answered, but buried the actual number."
          }
        ],
        "cursorPage": {
          "limit": 50
        },
        "filterNarrowed": true
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListScoresResponse"
    },
    {
      "id": "evals-recordScore-request",
      "operationId": "recordScore",
      "operationKey": "evals:recordScore",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Score an existing trace as an authenticated rater; this numeric example records 0.9.",
      "payload": {
        "targetType": "EVAL_TARGET_TYPE_TRACE",
        "targetId": "trace_123",
        "name": "answer-quality",
        "dataType": "SCORE_DATA_TYPE_NUMERIC",
        "numericValue": 0.9
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_RecordScoreRequest"
    },
    {
      "id": "evals-recordScore-response",
      "operationId": "recordScore",
      "operationKey": "evals:recordScore",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "scoreId": "example_123",
        "targetId": "example_123",
        "targetType": "EVAL_TARGET_TYPE_TRACE"
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_RecordScoreResponse"
    },
    {
      "id": "cookbook-insights-evaluation-review-05-request",
      "operationId": "recordScore",
      "operationKey": "evals:recordScore",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 3. Record the rating. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "targetType": "EVAL_TARGET_TYPE_TRACE",
        "targetId": "…",
        "name": "helpfulness",
        "dataType": "SCORE_DATA_TYPE_NUMERIC",
        "numericValue": 4,
        "configId": "cfg_helpfulness",
        "comment": "Accurate, but buried the answer in three paragraphs."
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_RecordScoreRequest"
    },
    {
      "id": "evals-deleteScore-request",
      "operationId": "deleteScore",
      "operationKey": "evals:deleteScore",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "scoreId": "example_123"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_DeleteScoreRequest"
    },
    {
      "id": "evals-deleteScore-response",
      "operationId": "deleteScore",
      "operationKey": "evals:deleteScore",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deleted": true
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_DeleteScoreResponse"
    },
    {
      "id": "cookbook-insights-evaluation-review-08-request",
      "operationId": "deleteScore",
      "operationKey": "evals:deleteScore",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Withdraw a rating. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "scoreId": "scr_7788"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_DeleteScoreRequest"
    },
    {
      "id": "evals-listScoreConfigs-request",
      "operationId": "listScoreConfigs",
      "operationKey": "evals:listScoreConfigs",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {},
      "schemaName": "platform_v1_services_eval_gateway_v1_ListScoreConfigsRequest"
    },
    {
      "id": "evals-listScoreConfigs-response",
      "operationId": "listScoreConfigs",
      "operationKey": "evals:listScoreConfigs",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "configs": [
          {
            "configId": "example_123",
            "name": "example",
            "dataType": "SCORE_DATA_TYPE_NUMERIC",
            "description": "example",
            "minValue": 1,
            "maxValue": 1,
            "categories": [
              {
                "label": "example",
                "value": 1
              }
            ],
            "isArchived": true,
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z"
          }
        ],
        "page": {
          "page": 1,
          "limit": 1,
          "totalItems": 1,
          "totalPages": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListScoreConfigsResponse"
    },
    {
      "id": "evals-createScoreConfig-request",
      "operationId": "createScoreConfig",
      "operationKey": "evals:createScoreConfig",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create a numeric scoring rubric ranging from zero to one.",
      "payload": {
        "name": "answer-quality",
        "dataType": "SCORE_DATA_TYPE_NUMERIC",
        "minValue": 0,
        "maxValue": 1
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateScoreConfigRequest"
    },
    {
      "id": "evals-createScoreConfig-response",
      "operationId": "createScoreConfig",
      "operationKey": "evals:createScoreConfig",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "configId": "example_123"
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateScoreConfigResponse"
    },
    {
      "id": "cookbook-insights-evaluation-review-01-request",
      "operationId": "createScoreConfig",
      "operationKey": "evals:createScoreConfig",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 1. Define the dimensions first. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "helpfulness",
        "dataType": "SCORE_DATA_TYPE_NUMERIC",
        "minValue": 1,
        "maxValue": 5
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateScoreConfigRequest"
    },
    {
      "id": "evals-updateScoreConfig-request",
      "operationId": "updateScoreConfig",
      "operationKey": "evals:updateScoreConfig",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "configId": "example_123",
        "name": "example"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_UpdateScoreConfigRequest"
    },
    {
      "id": "evals-updateScoreConfig-response",
      "operationId": "updateScoreConfig",
      "operationKey": "evals:updateScoreConfig",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "config": {
          "configId": "example_123",
          "name": "example",
          "dataType": "SCORE_DATA_TYPE_NUMERIC",
          "description": "example",
          "minValue": 1,
          "maxValue": 1,
          "categories": [
            {
              "label": "example",
              "value": 1
            }
          ],
          "isArchived": true,
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_UpdateScoreConfigResponse"
    },
    {
      "id": "evals-createComment-request",
      "operationId": "createComment",
      "operationKey": "evals:createComment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "objectType": "COMMENT_OBJECT_TYPE_TRACE",
        "objectId": "example_123",
        "content": "Example text"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateCommentRequest"
    },
    {
      "id": "evals-createComment-response",
      "operationId": "createComment",
      "operationKey": "evals:createComment",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "commentId": "example_123"
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateCommentResponse"
    },
    {
      "id": "cookbook-insights-evaluation-review-06-request",
      "operationId": "createComment",
      "operationKey": "evals:createComment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Save the explanation with the reviewed turn. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "objectType": "COMMENT_OBJECT_TYPE_TRACE",
        "objectId": "trc_a1b2c3",
        "content": "Tool call returned stale data."
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateCommentRequest"
    },
    {
      "id": "evals-listComments-request",
      "operationId": "listComments",
      "operationKey": "evals:listComments",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {},
      "schemaName": "platform_v1_services_eval_gateway_v1_ListCommentsRequest"
    },
    {
      "id": "evals-listComments-response",
      "operationId": "listComments",
      "operationKey": "evals:listComments",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "comments": [
          {
            "commentId": "example_123",
            "objectType": "COMMENT_OBJECT_TYPE_TRACE",
            "objectId": "example_123",
            "content": "Example text",
            "authorUserId": "example_123",
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z"
          }
        ],
        "page": {
          "page": 1,
          "limit": 1,
          "totalItems": 1,
          "totalPages": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListCommentsResponse"
    },
    {
      "id": "evals-deleteComment-request",
      "operationId": "deleteComment",
      "operationKey": "evals:deleteComment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "commentId": "example_123"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_DeleteCommentRequest"
    },
    {
      "id": "evals-deleteComment-response",
      "operationId": "deleteComment",
      "operationKey": "evals:deleteComment",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deleted": true
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_DeleteCommentResponse"
    },
    {
      "id": "evals-listDatasets-request",
      "operationId": "listDatasets",
      "operationKey": "evals:listDatasets",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {},
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetsRequest"
    },
    {
      "id": "evals-listDatasets-response",
      "operationId": "listDatasets",
      "operationKey": "evals:listDatasets",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "datasets": [
          {
            "datasetId": "example_123",
            "name": "example",
            "description": "example",
            "metadataJson": "{}",
            "itemCount": 1,
            "runCount": 1,
            "createdAt": "2026-09-16T12:00:00Z",
            "lastRunAt": "2026-09-16T12:00:00Z",
            "inputSchemaJson": "{}",
            "expectedOutputSchemaJson": "{}"
          }
        ],
        "page": {
          "page": 1,
          "limit": 1,
          "totalItems": 1,
          "totalPages": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetsResponse"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-08-request",
      "operationId": "listDatasets",
      "operationKey": "evals:listDatasets",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Browse the datasets. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "page": 1,
        "pageSize": 25
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetsRequest"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-json-03-response",
      "operationId": "listDatasets",
      "operationKey": "evals:listDatasets",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Browse the datasets. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "datasets": [
          {
            "datasetId": "ds_771",
            "name": "support-assistant-regressions",
            "description": "Turns a reviewer marked as wrong",
            "itemCount": 120,
            "runCount": 8,
            "lastRunAt": "2026-08-12T18:00:00Z",
            "createdAt": "2026-06-02T10:00:00Z"
          }
        ],
        "page": {
          "page": 1,
          "limit": 25,
          "totalItems": 3,
          "totalPages": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetsResponse"
    },
    {
      "id": "evals-createDataset-request",
      "operationId": "createDataset",
      "operationKey": "evals:createDataset",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create a named dataset for subsequent curation.",
      "payload": {
        "name": "support-answers",
        "description": "Curated product support questions and expected answers."
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateDatasetRequest"
    },
    {
      "id": "evals-createDataset-response",
      "operationId": "createDataset",
      "operationKey": "evals:createDataset",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "datasetId": "example_123"
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateDatasetResponse"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-01-request",
      "operationId": "createDataset",
      "operationKey": "evals:createDataset",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 1. Create the dataset. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "support-assistant-regressions",
        "description": "Turns we do not want to break"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateDatasetRequest"
    },
    {
      "id": "evals-addDatasetItem-request",
      "operationId": "addDatasetItem",
      "operationKey": "evals:addDatasetItem",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Harvest an existing trace into a named dataset; replace sourceTraceId with the trace being curated.",
      "payload": {
        "datasetId": "support-answers",
        "sourceTraceId": "trace_123",
        "inputJson": "{\"question\":\"How do I reset my password?\"}",
        "expectedOutputJson": "\"Use the password reset link on the sign-in page.\""
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_AddDatasetItemRequest"
    },
    {
      "id": "evals-addDatasetItem-response",
      "operationId": "addDatasetItem",
      "operationKey": "evals:addDatasetItem",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "itemId": "example_123"
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_AddDatasetItemResponse"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-02-request",
      "operationId": "addDatasetItem",
      "operationKey": "evals:addDatasetItem",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 2. Save the input needed to reproduce the problem. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "datasetId": "support-assistant-regressions",
        "conversationId": "conv_123",
        "sourceUserMessageId": "msg_abc",
        "inputJson": "{\"question\":\"What is the return window?\"}"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_AddDatasetItemRequest"
    },
    {
      "id": "evals-listDatasetItems-request",
      "operationId": "listDatasetItems",
      "operationKey": "evals:listDatasetItems",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List items from an existing dataset by name.",
      "payload": {
        "datasetName": "support-answers",
        "page": 1,
        "pageSize": 20
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetItemsRequest"
    },
    {
      "id": "evals-listDatasetItems-response",
      "operationId": "listDatasetItems",
      "operationKey": "evals:listDatasetItems",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "items": [
          {
            "itemId": "example_123",
            "datasetId": "example_123",
            "datasetName": "example",
            "inputJson": "{}",
            "expectedOutputJson": "{}",
            "metadataJson": "{}",
            "sourceTraceId": "example_123",
            "sourceObservationId": "example_123",
            "status": "DATASET_ITEM_STATUS_ACTIVE",
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z"
          }
        ],
        "page": {
          "page": 1,
          "limit": 1,
          "totalItems": 1,
          "totalPages": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetItemsResponse"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-03-request",
      "operationId": "listDatasetItems",
      "operationKey": "evals:listDatasetItems",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 3. Define what an acceptable answer must do. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "datasetName": "support-assistant-regressions",
        "onlyMissingExpectedOutput": true
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetItemsRequest"
    },
    {
      "id": "evals-updateDatasetItem-request",
      "operationId": "updateDatasetItem",
      "operationKey": "evals:updateDatasetItem",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace an existing item using its dataset name; retain the input when revising its expected output.",
      "payload": {
        "itemId": "item_123",
        "datasetId": "support-answers",
        "inputJson": "{\"question\":\"How do I reset my password?\"}",
        "expectedOutputJson": "\"Use the password reset link on the sign-in page.\""
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_UpdateDatasetItemRequest"
    },
    {
      "id": "evals-updateDatasetItem-response",
      "operationId": "updateDatasetItem",
      "operationKey": "evals:updateDatasetItem",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "itemId": "example_123"
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_UpdateDatasetItemResponse"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-04-request",
      "operationId": "updateDatasetItem",
      "operationKey": "evals:updateDatasetItem",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 3. Define what an acceptable answer must do. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "itemId": "…",
        "datasetId": "support-assistant-regressions",
        "expectedOutputJson": "{\"answer\": \"…\"}"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_UpdateDatasetItemRequest"
    },
    {
      "id": "evals-listDatasetRuns-request",
      "operationId": "listDatasetRuns",
      "operationKey": "evals:listDatasetRuns",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "datasetName": "example"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetRunsRequest"
    },
    {
      "id": "evals-listDatasetRuns-response",
      "operationId": "listDatasetRuns",
      "operationKey": "evals:listDatasetRuns",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "runs": [
          {
            "runId": "example_123",
            "datasetId": "example_123",
            "name": "example",
            "description": "example",
            "metadataJson": "{}",
            "itemCount": 1,
            "createdAt": "2026-09-16T12:00:00Z"
          }
        ],
        "cursorPage": {
          "nextCursor": "example",
          "limit": 1,
          "totalItems": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetRunsResponse"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-06-request",
      "operationId": "listDatasetRuns",
      "operationKey": "evals:listDatasetRuns",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 5. Decide whether the change fixes the problem without regressions. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "datasetName": "support-assistant-regressions",
        "pageSize": 25
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetRunsRequest"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-json-01-response",
      "operationId": "listDatasetRuns",
      "operationKey": "evals:listDatasetRuns",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for 5. Decide whether the change fixes the problem without regressions. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "runs": [
          {
            "runId": "run_0912",
            "name": "2026-08-12-candidate",
            "datasetId": "ds_771",
            "description": "profile revision and qualified model recorded in manifest",
            "itemCount": 120,
            "createdAt": "2026-08-12T18:00:00Z"
          }
        ],
        "cursorPage": {
          "limit": 25
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListDatasetRunsResponse"
    },
    {
      "id": "evals-getDatasetRun-request",
      "operationId": "getDatasetRun",
      "operationKey": "evals:getDatasetRun",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "datasetName": "example",
        "runName": "example"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_GetDatasetRunRequest"
    },
    {
      "id": "evals-getDatasetRun-response",
      "operationId": "getDatasetRun",
      "operationKey": "evals:getDatasetRun",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "run": {
          "runId": "example_123",
          "datasetId": "example_123",
          "name": "example",
          "description": "example",
          "metadataJson": "{}",
          "itemCount": 1,
          "createdAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_GetDatasetRunResponse"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-07-request",
      "operationId": "getDatasetRun",
      "operationKey": "evals:getDatasetRun",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 5. Decide whether the change fixes the problem without regressions. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "datasetName": "support-assistant-regressions",
        "runName": "2026-08-12-candidate"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_GetDatasetRunRequest"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-json-02-response",
      "operationId": "getDatasetRun",
      "operationKey": "evals:getDatasetRun",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for 5. Decide whether the change fixes the problem without regressions. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "run": {
          "runId": "run_0912",
          "name": "2026-08-12-candidate",
          "datasetId": "ds_771",
          "itemCount": 120,
          "metadataJson": "{\"profileRevisionHash\":\"9f2c1e…\"}",
          "createdAt": "2026-08-12T18:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_GetDatasetRunResponse"
    },
    {
      "id": "evals-listAnnotationQueues-request",
      "operationId": "listAnnotationQueues",
      "operationKey": "evals:listAnnotationQueues",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {},
      "schemaName": "platform_v1_services_eval_gateway_v1_ListAnnotationQueuesRequest"
    },
    {
      "id": "evals-listAnnotationQueues-response",
      "operationId": "listAnnotationQueues",
      "operationKey": "evals:listAnnotationQueues",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "queues": [
          {
            "queueId": "example_123",
            "name": "example",
            "description": "example",
            "scoreConfigIds": [
              "example_123"
            ],
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z",
            "pendingCount": 1,
            "completedCount": 1
          }
        ],
        "page": {
          "page": 1,
          "limit": 1,
          "totalItems": 1,
          "totalPages": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListAnnotationQueuesResponse"
    },
    {
      "id": "evals-createAnnotationQueue-request",
      "operationId": "createAnnotationQueue",
      "operationKey": "evals:createAnnotationQueue",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "name": "example",
        "scoreConfigIds": [
          "example_123"
        ]
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateAnnotationQueueRequest"
    },
    {
      "id": "evals-createAnnotationQueue-response",
      "operationId": "createAnnotationQueue",
      "operationKey": "evals:createAnnotationQueue",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "queueId": "example_123"
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateAnnotationQueueResponse"
    },
    {
      "id": "cookbook-insights-evaluation-review-02-request",
      "operationId": "createAnnotationQueue",
      "operationKey": "evals:createAnnotationQueue",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 2. Queue what needs reviewing. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "weekly-qa",
        "scoreConfigIds": [
          "cfg_helpfulness"
        ]
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_CreateAnnotationQueueRequest"
    },
    {
      "id": "evals-enqueueForAnnotation-request",
      "operationId": "enqueueForAnnotation",
      "operationKey": "evals:enqueueForAnnotation",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "queueId": "example_123",
        "targetType": "EVAL_TARGET_TYPE_TRACE",
        "targetId": "example_123"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_EnqueueForAnnotationRequest"
    },
    {
      "id": "evals-enqueueForAnnotation-response",
      "operationId": "enqueueForAnnotation",
      "operationKey": "evals:enqueueForAnnotation",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "queueItemId": "example_123"
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_EnqueueForAnnotationResponse"
    },
    {
      "id": "cookbook-insights-evaluation-review-03-request",
      "operationId": "enqueueForAnnotation",
      "operationKey": "evals:enqueueForAnnotation",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 2. Queue what needs reviewing. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "queueId": "q_weekly",
        "targetType": "EVAL_TARGET_TYPE_TRACE",
        "targetId": "trc_a1b2c3"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_EnqueueForAnnotationRequest"
    },
    {
      "id": "evals-listAnnotationQueueItems-request",
      "operationId": "listAnnotationQueueItems",
      "operationKey": "evals:listAnnotationQueueItems",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "queueId": "example_123"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_ListAnnotationQueueItemsRequest"
    },
    {
      "id": "evals-listAnnotationQueueItems-response",
      "operationId": "listAnnotationQueueItems",
      "operationKey": "evals:listAnnotationQueueItems",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "items": [
          {
            "itemId": "example_123",
            "queueId": "example_123",
            "objectId": "example_123",
            "objectType": "EVAL_TARGET_TYPE_TRACE",
            "status": "ANNOTATION_QUEUE_ITEM_STATUS_PENDING",
            "completedAt": "2026-09-16T12:00:00Z",
            "completedBy": "example",
            "createdAt": "2026-09-16T12:00:00Z"
          }
        ],
        "page": {
          "page": 1,
          "limit": 1,
          "totalItems": 1,
          "totalPages": 1
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListAnnotationQueueItemsResponse"
    },
    {
      "id": "cookbook-insights-evaluation-review-04-request",
      "operationId": "listAnnotationQueueItems",
      "operationKey": "evals:listAnnotationQueueItems",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Pull the worklist. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "queueId": "q_weekly",
        "status": "ANNOTATION_QUEUE_ITEM_STATUS_PENDING",
        "page": 1,
        "pageSize": 20
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_ListAnnotationQueueItemsRequest"
    },
    {
      "id": "cookbook-insights-evaluation-review-json-01-response",
      "operationId": "listAnnotationQueueItems",
      "operationKey": "evals:listAnnotationQueueItems",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Pull the worklist. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "items": [
          {
            "itemId": "qi_001",
            "queueId": "q_weekly",
            "objectType": "EVAL_TARGET_TYPE_TRACE",
            "objectId": "trc_a1b2c3",
            "status": "ANNOTATION_QUEUE_ITEM_STATUS_PENDING",
            "createdAt": "2026-08-12T17:00:00Z"
          }
        ],
        "page": {
          "page": 1,
          "limit": 20,
          "totalItems": 34,
          "totalPages": 2
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_ListAnnotationQueueItemsResponse"
    },
    {
      "id": "evals-completeAnnotationQueueItem-request",
      "operationId": "completeAnnotationQueueItem",
      "operationKey": "evals:completeAnnotationQueueItem",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "queueId": "example_123",
        "itemId": "example_123"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_CompleteAnnotationQueueItemRequest"
    },
    {
      "id": "evals-completeAnnotationQueueItem-response",
      "operationId": "completeAnnotationQueueItem",
      "operationKey": "evals:completeAnnotationQueueItem",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "item": {
          "itemId": "example_123",
          "queueId": "example_123",
          "objectId": "example_123",
          "objectType": "EVAL_TARGET_TYPE_TRACE",
          "status": "ANNOTATION_QUEUE_ITEM_STATUS_PENDING",
          "completedAt": "2026-09-16T12:00:00Z",
          "completedBy": "example",
          "createdAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_CompleteAnnotationQueueItemResponse"
    },
    {
      "id": "cookbook-insights-evaluation-review-07-request",
      "operationId": "completeAnnotationQueueItem",
      "operationKey": "evals:completeAnnotationQueueItem",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 4. Complete the saved review. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "queueId": "q_weekly",
        "itemId": "qi_001"
      },
      "schemaName": "platform_v1_services_eval_gateway_v1_CompleteAnnotationQueueItemRequest"
    },
    {
      "id": "cookbook-insights-evaluation-review-json-02-response",
      "operationId": "completeAnnotationQueueItem",
      "operationKey": "evals:completeAnnotationQueueItem",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for 4. Complete the saved review. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "item": {
          "itemId": "qi_001",
          "queueId": "q_weekly",
          "status": "ANNOTATION_QUEUE_ITEM_STATUS_COMPLETED",
          "completedAt": "2026-08-12T17:14:22Z",
          "completedBy": "reviewer_9"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_CompleteAnnotationQueueItemResponse"
    },
    {
      "id": "evals-getOverview-request",
      "operationId": "getOverview",
      "operationKey": "evals:getOverview",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {},
      "schemaName": "platform_v1_services_eval_gateway_v1_GetOverviewRequest"
    },
    {
      "id": "evals-getOverview-response",
      "operationId": "getOverview",
      "operationKey": "evals:getOverview",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "overview": {
          "totalTraces": "1",
          "tracesByName": [
            {
              "name": "example",
              "count": "1"
            }
          ],
          "tracesOverTime": [
            {
              "value": 1,
              "series": "example"
            }
          ],
          "observationsByLevel": [
            {
              "value": 1,
              "series": "example"
            }
          ],
          "scores": [
            {
              "name": "example",
              "source": "SCORE_SOURCE_JUDGE",
              "count": "1",
              "average": 1
            }
          ],
          "scoreMovingAverage": [
            {
              "value": 1,
              "series": "example"
            }
          ],
          "scoredTraceRatio": 1,
          "annotatedTraceCount": "1",
          "byProfile": [
            {
              "profileId": "example_123",
              "traceCount": "1",
              "avgEndUserRating": 1,
              "avgJudgeScore": 1,
              "thumbsDownCount": "1"
            }
          ],
          "latencyPercentiles": [
            {
              "traceName": "example",
              "p50": 1,
              "p90": 1,
              "p95": 1,
              "p99": 1
            }
          ],
          "recentLowScores": [
            {
              "scoreId": "example_123",
              "targetType": "EVAL_TARGET_TYPE_TRACE",
              "targetId": "example_123",
              "name": "example",
              "dataType": "SCORE_DATA_TYPE_NUMERIC",
              "numericValue": 1,
              "stringValue": "example",
              "booleanValue": true,
              "source": "SCORE_SOURCE_JUDGE",
              "comment": "example",
              "textValue": "Example text",
              "authorUserId": "example_123",
              "configId": "example_123",
              "queueId": "example_123",
              "traceId": "example_123",
              "observationId": "example_123",
              "sessionId": "example_123",
              "datasetRunId": "example_123",
              "environment": "example",
              "metadataJson": "{}",
              "traceName": "example",
              "userId": "example_123",
              "sourceLabel": "example",
              "conversationId": "example_123",
              "messageId": "example_123",
              "messageSequence": "1",
              "profileId": "example_123",
              "configHash": "example"
            }
          ]
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_eval_gateway_v1_GetOverviewResponse"
    },
    {
      "id": "notifications-registerPushDevice-request",
      "operationId": "registerPushDevice",
      "operationKey": "notifications:registerPushDevice",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Register the selected user’s actual device token; the displayed token is a placeholder.",
      "payload": {
        "fcmToken": "REPLACE_WITH_DEVICE_FCM_TOKEN"
      },
      "schemaName": "notification_v1_services_gateway_v1_RegisterPushDeviceRequest"
    },
    {
      "id": "notifications-registerPushDevice-response",
      "operationId": "registerPushDevice",
      "operationKey": "notifications:registerPushDevice",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "success": true,
        "subscriberId": "example_123"
      },
      "status": "200",
      "schemaName": "notification_v1_RegisterPushDeviceResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-05-request",
      "operationId": "registerPushDevice",
      "operationKey": "notifications:registerPushDevice",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: bring the user back when a notification arrives. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fcmToken": "firebase-cloud-messaging-token",
        "platform": "PLATFORM_IOS",
        "deviceId": "device-unique-id"
      },
      "schemaName": "notification_v1_services_gateway_v1_RegisterPushDeviceRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-json-06-response",
      "operationId": "registerPushDevice",
      "operationKey": "notifications:registerPushDevice",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Variant: bring the user back when a notification arrives. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "subscriberId": "user_123",
        "success": true
      },
      "status": "200",
      "schemaName": "notification_v1_RegisterPushDeviceResponse"
    },
    {
      "id": "notifications-unregisterPushDevice-request",
      "operationId": "unregisterPushDevice",
      "operationKey": "notifications:unregisterPushDevice",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Remove a device token previously registered for the selected user.",
      "payload": {
        "fcmToken": "REPLACE_WITH_DEVICE_FCM_TOKEN"
      },
      "schemaName": "notification_v1_services_gateway_v1_UnregisterPushDeviceRequest"
    },
    {
      "id": "notifications-unregisterPushDevice-response",
      "operationId": "unregisterPushDevice",
      "operationKey": "notifications:unregisterPushDevice",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "subscriberId": "example_123",
        "remainingCredentialCount": 1
      },
      "status": "200",
      "schemaName": "notification_v1_UnregisterPushDeviceResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-06-request",
      "operationId": "unregisterPushDevice",
      "operationKey": "notifications:unregisterPushDevice",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: bring the user back when a notification arrives. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fcmToken": "firebase-cloud-messaging-token"
      },
      "schemaName": "notification_v1_services_gateway_v1_UnregisterPushDeviceRequest"
    },
    {
      "id": "notifications-getRegisteredChannels-request",
      "operationId": "getRegisteredChannels",
      "operationKey": "notifications:getRegisteredChannels",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read the notification channels registered for the selected user.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_GetRegisteredChannelsRequest"
    },
    {
      "id": "notifications-getRegisteredChannels-response",
      "operationId": "getRegisteredChannels",
      "operationKey": "notifications:getRegisteredChannels",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "channels": [
          {
            "channel": "CHANNEL_PUSH",
            "registered": true,
            "credentialCount": 1
          }
        ]
      },
      "status": "200",
      "schemaName": "notification_v1_GetRegisteredChannelsResponse"
    },
    {
      "id": "notifications-getInboxSession-request",
      "operationId": "getInboxSession",
      "operationKey": "notifications:getInboxSession",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create an inbox session for the selected user; identity comes from authentication.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_GetInboxSessionRequest"
    },
    {
      "id": "notifications-getInboxSession-response",
      "operationId": "getInboxSession",
      "operationKey": "notifications:getInboxSession",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "token": "example",
        "socketUrl": "https://example.com/resource",
        "expiresIn": "1"
      },
      "status": "200",
      "schemaName": "notification_v1_GetInboxSessionResponse"
    },
    {
      "id": "notifications-sendNotification-request",
      "operationId": "sendNotification",
      "operationKey": "notifications:sendNotification",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Trigger the prepared welcome workflow for an enrolled user; replace the workflow and user identifiers.",
      "payload": {
        "workflowId": "welcome-notification",
        "userId": "user-1",
        "payload": {}
      },
      "schemaName": "notification_v1_services_gateway_v1_SendNotificationRequest"
    },
    {
      "id": "notifications-sendNotification-response",
      "operationId": "sendNotification",
      "operationKey": "notifications:sendNotification",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "acknowledged": true,
        "status": "example",
        "transactionId": "example_123",
        "errors": [
          "example"
        ]
      },
      "status": "200",
      "schemaName": "notification_v1_SendNotificationResponse"
    },
    {
      "id": "notifications-sendBulkNotification-request",
      "operationId": "sendBulkNotification",
      "operationKey": "notifications:sendBulkNotification",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Trigger a prepared workflow for two enrolled users; inspect every returned result.",
      "payload": {
        "events": [
          {
            "workflowId": "push-notification",
            "userId": "user-1",
            "payload": {
              "title": "Update",
              "body": "New feature available"
            }
          },
          {
            "workflowId": "push-notification",
            "userId": "user-2",
            "payload": {
              "title": "Update",
              "body": "New feature available"
            }
          }
        ]
      },
      "schemaName": "notification_v1_services_gateway_v1_SendBulkNotificationRequest"
    },
    {
      "id": "notifications-sendBulkNotification-response",
      "operationId": "sendBulkNotification",
      "operationKey": "notifications:sendBulkNotification",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "results": [
          {
            "acknowledged": true,
            "status": "example",
            "transactionId": "example_123",
            "errors": [
              "example"
            ]
          }
        ]
      },
      "status": "200",
      "schemaName": "notification_v1_SendBulkNotificationResponse"
    },
    {
      "id": "notifications-cancelNotification-request",
      "operationId": "cancelNotification",
      "operationKey": "notifications:cancelNotification",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "transactionId": "example_123"
      },
      "schemaName": "notification_v1_services_gateway_v1_CancelNotificationRequest"
    },
    {
      "id": "notifications-cancelNotification-response",
      "operationId": "cancelNotification",
      "operationKey": "notifications:cancelNotification",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "cancelled": true,
        "message": "example"
      },
      "status": "200",
      "schemaName": "notification_v1_CancelNotificationResponse"
    },
    {
      "id": "notifications-getInboxFeed-request",
      "operationId": "getInboxFeed",
      "operationKey": "notifications:getInboxFeed",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read the selected user’s inbox using default paging and filters.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_GetInboxFeedRequest"
    },
    {
      "id": "notifications-getInboxFeed-response",
      "operationId": "getInboxFeed",
      "operationKey": "notifications:getInboxFeed",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "messages": [
          {
            "messageId": "example_123",
            "notificationId": "example_123",
            "title": "example",
            "body": "example",
            "data": {},
            "deepLink": "example",
            "imageUrl": "https://example.com/resource",
            "status": "MESSAGE_STATUS_UNSEEN",
            "category": "example",
            "createdAt": "2026-09-16T12:00:00Z",
            "seenAt": "2026-09-16T12:00:00Z",
            "readAt": "2026-09-16T12:00:00Z",
            "actions": [
              {
                "actionId": "example_123",
                "label": "example",
                "url": "https://example.com/resource",
                "isPrimary": true,
                "completed": true
              }
            ],
            "tags": [
              "example"
            ],
            "archived": true,
            "archivedAt": "2026-09-16T12:00:00Z"
          }
        ],
        "totalCount": 1,
        "page": 1,
        "pageSize": 1,
        "hasMore": true
      },
      "status": "200",
      "schemaName": "notification_v1_GetInboxFeedResponse"
    },
    {
      "id": "notifications-getInboxUnseenCount-request",
      "operationId": "getInboxUnseenCount",
      "operationKey": "notifications:getInboxUnseenCount",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Count unseen messages in the selected user’s inbox.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_GetInboxUnseenCountRequest"
    },
    {
      "id": "notifications-getInboxUnseenCount-response",
      "operationId": "getInboxUnseenCount",
      "operationKey": "notifications:getInboxUnseenCount",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "unseenCount": 1,
        "unreadCount": 1,
        "hasMoreUnseen": true,
        "hasMoreUnread": true
      },
      "status": "200",
      "schemaName": "notification_v1_GetInboxUnseenCountResponse"
    },
    {
      "id": "notifications-markInboxMessageAs-request",
      "operationId": "markInboxMessageAs",
      "operationKey": "notifications:markInboxMessageAs",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Mark an existing inbox message as read.",
      "payload": {
        "messageId": "msg_123",
        "markAs": "MESSAGE_STATUS_READ"
      },
      "schemaName": "notification_v1_services_gateway_v1_MarkInboxMessageAsRequest"
    },
    {
      "id": "notifications-markInboxMessageAs-response",
      "operationId": "markInboxMessageAs",
      "operationKey": "notifications:markInboxMessageAs",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "messages": [
          {
            "messageId": "example_123",
            "channel": "example",
            "read": true,
            "seen": true,
            "archived": true,
            "content": "Example text",
            "subject": "example",
            "status": "example",
            "createdAt": "example",
            "lastReadDate": "example",
            "lastSeenDate": "example"
          }
        ]
      },
      "status": "200",
      "schemaName": "notification_v1_MarkInboxMessageAsResponse"
    },
    {
      "id": "notifications-markAllInboxMessagesAs-request",
      "operationId": "markAllInboxMessagesAs",
      "operationKey": "notifications:markAllInboxMessagesAs",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Mark all inbox messages in the selected user scope as read.",
      "payload": {
        "markAs": "MESSAGE_STATUS_READ"
      },
      "schemaName": "notification_v1_services_gateway_v1_MarkAllInboxMessagesAsRequest"
    },
    {
      "id": "notifications-markAllInboxMessagesAs-response",
      "operationId": "markAllInboxMessagesAs",
      "operationKey": "notifications:markAllInboxMessagesAs",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "updatedCount": 1
      },
      "status": "200",
      "schemaName": "notification_v1_MarkAllInboxMessagesAsResponse"
    },
    {
      "id": "notifications-deleteInboxMessage-request",
      "operationId": "deleteInboxMessage",
      "operationKey": "notifications:deleteInboxMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "messageId": "example_123"
      },
      "schemaName": "notification_v1_services_gateway_v1_DeleteInboxMessageRequest"
    },
    {
      "id": "notifications-deleteInboxMessage-response",
      "operationId": "deleteInboxMessage",
      "operationKey": "notifications:deleteInboxMessage",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "status": {
          "acknowledged": true,
          "status": "example"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_DeleteInboxMessageResponse"
    },
    {
      "id": "notifications-archiveInboxMessage-request",
      "operationId": "archiveInboxMessage",
      "operationKey": "notifications:archiveInboxMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "notificationId": "example_123"
      },
      "schemaName": "notification_v1_services_gateway_v1_ArchiveInboxMessageRequest"
    },
    {
      "id": "notifications-archiveInboxMessage-response",
      "operationId": "archiveInboxMessage",
      "operationKey": "notifications:archiveInboxMessage",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "status": {
          "acknowledged": true,
          "status": "example"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_ArchiveInboxMessageResponse"
    },
    {
      "id": "notifications-unarchiveInboxMessage-request",
      "operationId": "unarchiveInboxMessage",
      "operationKey": "notifications:unarchiveInboxMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "notificationId": "example_123"
      },
      "schemaName": "notification_v1_services_gateway_v1_UnarchiveInboxMessageRequest"
    },
    {
      "id": "notifications-unarchiveInboxMessage-response",
      "operationId": "unarchiveInboxMessage",
      "operationKey": "notifications:unarchiveInboxMessage",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "status": {
          "acknowledged": true,
          "status": "example"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_UnarchiveInboxMessageResponse"
    },
    {
      "id": "notifications-archiveAllInboxMessages-request",
      "operationId": "archiveAllInboxMessages",
      "operationKey": "notifications:archiveAllInboxMessages",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Archive all messages in the selected user’s inbox; no tag filter is supplied.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_ArchiveAllInboxMessagesRequest"
    },
    {
      "id": "notifications-archiveAllInboxMessages-response",
      "operationId": "archiveAllInboxMessages",
      "operationKey": "notifications:archiveAllInboxMessages",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "archivedCount": 1
      },
      "status": "200",
      "schemaName": "notification_v1_ArchiveAllInboxMessagesResponse"
    },
    {
      "id": "notifications-archiveAllReadInboxMessages-request",
      "operationId": "archiveAllReadInboxMessages",
      "operationKey": "notifications:archiveAllReadInboxMessages",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Archive all read messages in the selected user’s inbox; no tag filter is supplied.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_ArchiveAllReadInboxMessagesRequest"
    },
    {
      "id": "notifications-archiveAllReadInboxMessages-response",
      "operationId": "archiveAllReadInboxMessages",
      "operationKey": "notifications:archiveAllReadInboxMessages",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "archivedCount": 1
      },
      "status": "200",
      "schemaName": "notification_v1_ArchiveAllReadInboxMessagesResponse"
    },
    {
      "id": "notifications-completeInboxAction-request",
      "operationId": "completeInboxAction",
      "operationKey": "notifications:completeInboxAction",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "notificationId": "example_123",
        "actionType": "ACTION_TYPE_PRIMARY"
      },
      "schemaName": "notification_v1_services_gateway_v1_CompleteInboxActionRequest"
    },
    {
      "id": "notifications-completeInboxAction-response",
      "operationId": "completeInboxAction",
      "operationKey": "notifications:completeInboxAction",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "status": {
          "acknowledged": true,
          "status": "example"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_CompleteInboxActionResponse"
    },
    {
      "id": "notifications-revertInboxAction-request",
      "operationId": "revertInboxAction",
      "operationKey": "notifications:revertInboxAction",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "notificationId": "example_123",
        "actionType": "ACTION_TYPE_PRIMARY"
      },
      "schemaName": "notification_v1_services_gateway_v1_RevertInboxActionRequest"
    },
    {
      "id": "notifications-revertInboxAction-response",
      "operationId": "revertInboxAction",
      "operationKey": "notifications:revertInboxAction",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "status": {
          "acknowledged": true,
          "status": "example"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_RevertInboxActionResponse"
    },
    {
      "id": "notifications-createTopic-request",
      "operationId": "createTopic",
      "operationKey": "notifications:createTopic",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create a topic before adding its subscribers.",
      "payload": {
        "topicKey": "product-updates",
        "name": "Product updates"
      },
      "schemaName": "notification_v1_services_gateway_v1_CreateTopicRequest"
    },
    {
      "id": "notifications-createTopic-response",
      "operationId": "createTopic",
      "operationKey": "notifications:createTopic",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "topicKey": "example_123",
        "topicId": "example_123"
      },
      "status": "200",
      "schemaName": "notification_v1_CreateTopicResponse"
    },
    {
      "id": "notifications-deleteTopic-request",
      "operationId": "deleteTopic",
      "operationKey": "notifications:deleteTopic",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "topicKey": "example_123"
      },
      "schemaName": "notification_v1_services_gateway_v1_DeleteTopicRequest"
    },
    {
      "id": "notifications-deleteTopic-response",
      "operationId": "deleteTopic",
      "operationKey": "notifications:deleteTopic",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "status": {
          "acknowledged": true,
          "status": "example"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_DeleteTopicResponse"
    },
    {
      "id": "notifications-addSubscribersToTopic-request",
      "operationId": "addSubscribersToTopic",
      "operationKey": "notifications:addSubscribersToTopic",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Add existing application users to an existing topic.",
      "payload": {
        "topicKey": "product-updates",
        "userIds": [
          "user-1",
          "user-2"
        ]
      },
      "schemaName": "notification_v1_services_gateway_v1_AddSubscribersToTopicRequest"
    },
    {
      "id": "notifications-addSubscribersToTopic-response",
      "operationId": "addSubscribersToTopic",
      "operationKey": "notifications:addSubscribersToTopic",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "result": {
          "totalCount": 1,
          "successful": 1,
          "failed": 1,
          "errors": [
            {
              "subscriberId": "example_123",
              "code": "example",
              "message": "example"
            }
          ]
        }
      },
      "status": "200",
      "schemaName": "notification_v1_AddSubscribersToTopicResponse"
    },
    {
      "id": "notifications-removeSubscribersFromTopic-request",
      "operationId": "removeSubscribersFromTopic",
      "operationKey": "notifications:removeSubscribersFromTopic",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Remove the selected application user from an existing topic.",
      "payload": {
        "topicKey": "product-updates",
        "userIds": [
          "user-1"
        ]
      },
      "schemaName": "notification_v1_services_gateway_v1_RemoveSubscribersFromTopicRequest"
    },
    {
      "id": "notifications-removeSubscribersFromTopic-response",
      "operationId": "removeSubscribersFromTopic",
      "operationKey": "notifications:removeSubscribersFromTopic",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "result": {
          "totalCount": 1,
          "successful": 1,
          "failed": 1,
          "errors": [
            {
              "subscriberId": "example_123",
              "code": "example",
              "message": "example"
            }
          ]
        }
      },
      "status": "200",
      "schemaName": "notification_v1_RemoveSubscribersFromTopicResponse"
    },
    {
      "id": "notifications-listTopicSubscribers-request",
      "operationId": "listTopicSubscribers",
      "operationKey": "notifications:listTopicSubscribers",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "topicKey": "example_123"
      },
      "schemaName": "notification_v1_services_gateway_v1_ListTopicSubscribersRequest"
    },
    {
      "id": "notifications-listTopicSubscribers-response",
      "operationId": "listTopicSubscribers",
      "operationKey": "notifications:listTopicSubscribers",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "userIds": [
          "example_123"
        ],
        "totalCount": 1,
        "hasMore": true
      },
      "status": "200",
      "schemaName": "notification_v1_ListTopicSubscribersResponse"
    },
    {
      "id": "notifications-checkTopicSubscription-request",
      "operationId": "checkTopicSubscription",
      "operationKey": "notifications:checkTopicSubscription",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "topicKey": "example_123",
        "userId": "example_123"
      },
      "schemaName": "notification_v1_services_gateway_v1_CheckTopicSubscriptionRequest"
    },
    {
      "id": "notifications-checkTopicSubscription-response",
      "operationId": "checkTopicSubscription",
      "operationKey": "notifications:checkTopicSubscription",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "isSubscribed": true
      },
      "status": "200",
      "schemaName": "notification_v1_CheckTopicSubscriptionResponse"
    },
    {
      "id": "notifications-sendToTopic-request",
      "operationId": "sendToTopic",
      "operationKey": "notifications:sendToTopic",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Trigger a prepared workflow for subscribers to an existing topic.",
      "payload": {
        "workflowId": "push-notification",
        "topicKey": "product-updates",
        "payload": {
          "title": "Update",
          "body": "New feature available"
        }
      },
      "schemaName": "notification_v1_services_gateway_v1_SendToTopicRequest"
    },
    {
      "id": "notifications-sendToTopic-response",
      "operationId": "sendToTopic",
      "operationKey": "notifications:sendToTopic",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "acknowledged": true,
        "status": "example",
        "transactionId": "example_123",
        "errors": [
          "example"
        ]
      },
      "status": "200",
      "schemaName": "notification_v1_SendToTopicResponse"
    },
    {
      "id": "notifications-sendWithDigest-request",
      "operationId": "sendWithDigest",
      "operationKey": "notifications:sendWithDigest",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Submit one event to a workflow that already has a digest step configured.",
      "payload": {
        "workflowId": "activity-digest",
        "userId": "user-1",
        "payload": {
          "title": "Account activity",
          "body": "A new report is available."
        }
      },
      "schemaName": "notification_v1_services_gateway_v1_SendWithDigestRequest"
    },
    {
      "id": "notifications-sendWithDigest-response",
      "operationId": "sendWithDigest",
      "operationKey": "notifications:sendWithDigest",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "acknowledged": true,
        "status": "example",
        "transactionId": "example_123",
        "errors": [
          "example"
        ]
      },
      "status": "200",
      "schemaName": "notification_v1_SendWithDigestResponse"
    },
    {
      "id": "notifications-cancelDigestEvent-request",
      "operationId": "cancelDigestEvent",
      "operationKey": "notifications:cancelDigestEvent",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "transactionId": "example_123"
      },
      "schemaName": "notification_v1_services_gateway_v1_CancelDigestEventRequest"
    },
    {
      "id": "notifications-cancelDigestEvent-response",
      "operationId": "cancelDigestEvent",
      "operationKey": "notifications:cancelDigestEvent",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "cancelled": true,
        "message": "example"
      },
      "status": "200",
      "schemaName": "notification_v1_CancelDigestEventResponse"
    },
    {
      "id": "notifications-getPreferences-request",
      "operationId": "getPreferences",
      "operationKey": "notifications:getPreferences",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read notification preferences for the selected user.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_GetPreferencesRequest"
    },
    {
      "id": "notifications-getPreferences-response",
      "operationId": "getPreferences",
      "operationKey": "notifications:getPreferences",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "global": {
          "enabled": true,
          "channels": {
            "inApp": true,
            "push": true,
            "email": true,
            "sms": true,
            "chat": true
          }
        },
        "workflows": [
          {
            "workflowId": "example_123",
            "workflowName": "example",
            "critical": true,
            "tags": [
              "example"
            ],
            "channels": {
              "inApp": true,
              "push": true,
              "email": true,
              "sms": true,
              "chat": true
            }
          }
        ]
      },
      "status": "200",
      "schemaName": "notification_v1_GetPreferencesResponse"
    },
    {
      "id": "notifications-updateGlobalPreference-request",
      "operationId": "updateGlobalPreference",
      "operationKey": "notifications:updateGlobalPreference",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Disable push notifications while leaving omitted channels unchanged.",
      "payload": {
        "channels": {
          "push": false
        }
      },
      "schemaName": "notification_v1_services_gateway_v1_UpdateGlobalPreferenceRequest"
    },
    {
      "id": "notifications-updateGlobalPreference-response",
      "operationId": "updateGlobalPreference",
      "operationKey": "notifications:updateGlobalPreference",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "google_protobuf_Empty"
    },
    {
      "id": "notifications-updateWorkflowPreference-request",
      "operationId": "updateWorkflowPreference",
      "operationKey": "notifications:updateWorkflowPreference",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Disable push for an existing workflow while leaving other channels unchanged.",
      "payload": {
        "workflowId": "promotional",
        "channels": {
          "push": false
        }
      },
      "schemaName": "notification_v1_services_gateway_v1_UpdateWorkflowPreferenceRequestRequest"
    },
    {
      "id": "notifications-updateWorkflowPreference-response",
      "operationId": "updateWorkflowPreference",
      "operationKey": "notifications:updateWorkflowPreference",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "google_protobuf_Empty"
    },
    {
      "id": "notifications-bulkUpdatePreferences-request",
      "operationId": "bulkUpdatePreferences",
      "operationKey": "notifications:bulkUpdatePreferences",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Update two existing workflows; inspect the per-entry outcomes.",
      "payload": {
        "entries": [
          {
            "workflowId": "promotional",
            "channels": {
              "push": false
            }
          },
          {
            "workflowId": "weekly-summary",
            "channels": {
              "inApp": true,
              "push": true
            }
          }
        ]
      },
      "schemaName": "notification_v1_services_gateway_v1_BulkUpdatePreferencesRequest"
    },
    {
      "id": "notifications-bulkUpdatePreferences-response",
      "operationId": "bulkUpdatePreferences",
      "operationKey": "notifications:bulkUpdatePreferences",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "updatedCount": 1
      },
      "status": "200",
      "schemaName": "notification_v1_BulkUpdatePreferencesResponse"
    },
    {
      "id": "notifications-updateSubscriberData-request",
      "operationId": "updateSubscriberData",
      "operationKey": "notifications:updateSubscriberData",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Update attributes for the user selected by authentication.",
      "payload": {
        "data": {
          "firstName": "Alex",
          "locale": "en-US",
          "timezone": "America/New_York"
        }
      },
      "schemaName": "notification_v1_services_gateway_v1_UpdateSubscriberDataRequest"
    },
    {
      "id": "notifications-updateSubscriberData-response",
      "operationId": "updateSubscriberData",
      "operationKey": "notifications:updateSubscriberData",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "data": {
          "firstName": "example",
          "lastName": "example",
          "email": "user@example.com",
          "phone": "example",
          "avatarUrl": "https://example.com/resource",
          "locale": "en-US",
          "timezone": "example",
          "customData": {}
        },
        "updatedAt": "2026-09-16T12:00:00Z"
      },
      "status": "200",
      "schemaName": "notification_v1_UpdateSubscriberDataResponse"
    },
    {
      "id": "notifications-getSubscriber-request",
      "operationId": "getSubscriber",
      "operationKey": "notifications:getSubscriber",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read the subscriber selected by authentication; no subscriber ID is accepted in this body.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_GetSubscriberRequest"
    },
    {
      "id": "notifications-getSubscriber-response",
      "operationId": "getSubscriber",
      "operationKey": "notifications:getSubscriber",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "subscriberId": "example_123",
        "data": {
          "firstName": "example",
          "lastName": "example",
          "email": "user@example.com",
          "phone": "example",
          "avatarUrl": "https://example.com/resource",
          "locale": "en-US",
          "timezone": "example",
          "customData": {}
        },
        "channels": [
          {
            "channel": "CHANNEL_PUSH",
            "registered": true,
            "credentialCount": 1
          }
        ],
        "createdAt": "2026-09-16T12:00:00Z",
        "updatedAt": "2026-09-16T12:00:00Z",
        "globalPreferences": {
          "enabled": true,
          "channels": {
            "inApp": true,
            "push": true,
            "email": true,
            "sms": true,
            "chat": true
          }
        },
        "workflowPreferences": [
          {
            "workflowId": "example_123",
            "workflowName": "example",
            "critical": true,
            "tags": [
              "example"
            ],
            "channels": {
              "inApp": true,
              "push": true,
              "email": true,
              "sms": true,
              "chat": true
            }
          }
        ]
      },
      "status": "200",
      "schemaName": "notification_v1_GetSubscriberResponse"
    },
    {
      "id": "notifications-deleteSubscriber-request",
      "operationId": "deleteSubscriber",
      "operationKey": "notifications:deleteSubscriber",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Delete the subscriber selected by authentication; no subscriber ID is accepted in this body.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_DeleteSubscriberRequest"
    },
    {
      "id": "notifications-deleteSubscriber-response",
      "operationId": "deleteSubscriber",
      "operationKey": "notifications:deleteSubscriber",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "status": {
          "acknowledged": true,
          "status": "example"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_DeleteSubscriberResponse"
    },
    {
      "id": "notifications-createSubscriber-request",
      "operationId": "createSubscriber",
      "operationKey": "notifications:createSubscriber",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Enroll an application user for notification delivery; use their stable application user ID.",
      "payload": {
        "subscriberId": "user-1",
        "email": "alex@example.com",
        "firstName": "Alex",
        "locale": "en-US"
      },
      "schemaName": "notification_v1_services_gateway_v1_CreateSubscriberRequest"
    },
    {
      "id": "notifications-createSubscriber-response",
      "operationId": "createSubscriber",
      "operationKey": "notifications:createSubscriber",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "novuSubscriberId": "example_123",
        "subscriberId": "example_123"
      },
      "status": "200",
      "schemaName": "notification_v1_CreateSubscriberResponse"
    },
    {
      "id": "cookbook-core-platform-notifications-administration-json-02-request",
      "operationId": "createSubscriber",
      "operationKey": "notifications:createSubscriber",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 2. Enroll the same application user. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "subscriberId": "user-1"
      },
      "schemaName": "notification_v1_services_gateway_v1_CreateSubscriberRequest"
    },
    {
      "id": "notifications-listSubscribers-request",
      "operationId": "listSubscribers",
      "operationKey": "notifications:listSubscribers",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List subscribers in the authenticated tenant with default paging.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_ListSubscribersRequest"
    },
    {
      "id": "notifications-listSubscribers-response",
      "operationId": "listSubscribers",
      "operationKey": "notifications:listSubscribers",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "subscribers": [
          {
            "subscriberId": "example_123",
            "email": "user@example.com",
            "firstName": "example",
            "lastName": "example",
            "isOnline": true,
            "lastOnlineAt": "2026-09-16T12:00:00Z"
          }
        ],
        "totalCount": 1,
        "hasMore": true
      },
      "status": "200",
      "schemaName": "notification_v1_ListSubscribersResponse"
    },
    {
      "id": "notifications-getDeliveryStatus-request",
      "operationId": "getDeliveryStatus",
      "operationKey": "notifications:getDeliveryStatus",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "transactionId": "example_123"
      },
      "schemaName": "notification_v1_services_gateway_v1_GetDeliveryStatusRequest"
    },
    {
      "id": "notifications-getDeliveryStatus-response",
      "operationId": "getDeliveryStatus",
      "operationKey": "notifications:getDeliveryStatus",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "activity": {
          "example": "value"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_GetDeliveryStatusResponse"
    },
    {
      "id": "notifications-getNotificationActivity-request",
      "operationId": "getNotificationActivity",
      "operationKey": "notifications:getNotificationActivity",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read notification activity using default paging and filters.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_GetNotificationActivityRequest"
    },
    {
      "id": "notifications-getNotificationActivity-response",
      "operationId": "getNotificationActivity",
      "operationKey": "notifications:getNotificationActivity",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "entries": [
          {
            "example": "value"
          }
        ],
        "hasMore": true
      },
      "status": "200",
      "schemaName": "notification_v1_GetNotificationActivityResponse"
    },
    {
      "id": "notifications-configureProvider-request",
      "operationId": "configureProvider",
      "operationKey": "notifications:configureProvider",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Configure email delivery with your SendGrid credential; the displayed key is a placeholder.",
      "payload": {
        "provider": "PROVIDER_TYPE_SENDGRID",
        "credentials": {
          "apiKey": "REPLACE_WITH_SENDGRID_API_KEY"
        },
        "active": true
      },
      "schemaName": "notification_v1_services_gateway_v1_ConfigureProviderRequest"
    },
    {
      "id": "notifications-configureProvider-response",
      "operationId": "configureProvider",
      "operationKey": "notifications:configureProvider",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "integrationId": "example_123",
        "active": true
      },
      "status": "200",
      "schemaName": "notification_v1_ConfigureProviderResponse"
    },
    {
      "id": "notifications-getProviders-request",
      "operationId": "getProviders",
      "operationKey": "notifications:getProviders",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List configured notification delivery providers.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_GetProvidersRequest"
    },
    {
      "id": "notifications-getProviders-response",
      "operationId": "getProviders",
      "operationKey": "notifications:getProviders",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "providers": [
          {
            "provider": "PROVIDER_TYPE_FCM",
            "integrationId": "example_123",
            "active": true
          }
        ]
      },
      "status": "200",
      "schemaName": "notification_v1_GetProvidersResponse"
    },
    {
      "id": "notifications-createWorkflow-request",
      "operationId": "createWorkflow",
      "operationKey": "notifications:createWorkflow",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create the in-app welcome definition from the administration recipe; provider JSON is passed through.",
      "payload": {
        "workflow": {
          "name": "Welcome Notification",
          "description": "Sent when a user completes onboarding",
          "__source": "editor",
          "steps": [
            {
              "name": "In-App Step",
              "type": "in_app",
              "controlValues": {
                "body": "Welcome to your health coaching journey!"
              }
            }
          ]
        }
      },
      "schemaName": "notification_v1_services_gateway_v1_CreateWorkflowRequest"
    },
    {
      "id": "notifications-createWorkflow-response",
      "operationId": "createWorkflow",
      "operationKey": "notifications:createWorkflow",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "workflow": {
          "example": "value"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_CreateWorkflowResponse"
    },
    {
      "id": "notifications-updateWorkflow-request",
      "operationId": "updateWorkflow",
      "operationKey": "notifications:updateWorkflow",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace an existing workflow with the complete definition; preserve every delivery step you intend to keep.",
      "payload": {
        "workflowId": "welcome-notification",
        "workflow": {
          "name": "Welcome Notification",
          "description": "Sent when a user completes onboarding",
          "__source": "editor",
          "steps": [
            {
              "name": "In-App Step",
              "type": "in_app",
              "controlValues": {
                "body": "Welcome to your health coaching journey!"
              }
            }
          ]
        }
      },
      "schemaName": "notification_v1_services_gateway_v1_UpdateWorkflowRequest"
    },
    {
      "id": "notifications-updateWorkflow-response",
      "operationId": "updateWorkflow",
      "operationKey": "notifications:updateWorkflow",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "workflow": {
          "example": "value"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_UpdateWorkflowResponse"
    },
    {
      "id": "notifications-getWorkflow-request",
      "operationId": "getWorkflow",
      "operationKey": "notifications:getWorkflow",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read an existing workflow using its saved workflow identifier.",
      "payload": {
        "workflowId": "welcome-notification"
      },
      "schemaName": "notification_v1_services_gateway_v1_GetWorkflowRequest"
    },
    {
      "id": "notifications-getWorkflow-response",
      "operationId": "getWorkflow",
      "operationKey": "notifications:getWorkflow",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "workflow": {
          "example": "value"
        }
      },
      "status": "200",
      "schemaName": "notification_v1_GetWorkflowResponse"
    },
    {
      "id": "notifications-listWorkflows-request",
      "operationId": "listWorkflows",
      "operationKey": "notifications:listWorkflows",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List notification workflows with default paging.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_ListWorkflowsRequest"
    },
    {
      "id": "notifications-listWorkflows-response",
      "operationId": "listWorkflows",
      "operationKey": "notifications:listWorkflows",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "workflows": [
          {
            "example": "value"
          }
        ],
        "totalCount": 1,
        "hasMore": true
      },
      "status": "200",
      "schemaName": "notification_v1_ListWorkflowsResponse"
    },
    {
      "id": "notifications-deleteWorkflow-request",
      "operationId": "deleteWorkflow",
      "operationKey": "notifications:deleteWorkflow",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Retire an existing workflow after stopping new triggers.",
      "payload": {
        "workflowId": "welcome-notification"
      },
      "schemaName": "notification_v1_services_gateway_v1_DeleteWorkflowRequest"
    },
    {
      "id": "notifications-deleteWorkflow-response",
      "operationId": "deleteWorkflow",
      "operationKey": "notifications:deleteWorkflow",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "workflowId": "example_123"
      },
      "status": "200",
      "schemaName": "notification_v1_DeleteWorkflowResponse"
    },
    {
      "id": "notifications-getPendingChanges-request",
      "operationId": "getPendingChanges",
      "operationKey": "notifications:getPendingChanges",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List pending notification configuration changes in the configured environment.",
      "payload": {},
      "schemaName": "notification_v1_services_gateway_v1_GetPendingChangesRequest"
    },
    {
      "id": "notifications-getPendingChanges-response",
      "operationId": "getPendingChanges",
      "operationKey": "notifications:getPendingChanges",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "changes": [
          {
            "changeId": "example_123",
            "type": "example",
            "entityName": "example",
            "entityId": "example_123",
            "createdAt": "2026-09-16T12:00:00Z",
            "createdBy": "example"
          }
        ],
        "totalCount": 1
      },
      "status": "200",
      "schemaName": "notification_v1_GetPendingChangesResponse"
    },
    {
      "id": "notifications-promoteChange-request",
      "operationId": "promoteChange",
      "operationKey": "notifications:promoteChange",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "changeId": "example_123"
      },
      "schemaName": "notification_v1_services_gateway_v1_PromoteChangeRequest"
    },
    {
      "id": "notifications-promoteChange-response",
      "operationId": "promoteChange",
      "operationKey": "notifications:promoteChange",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "success": true,
        "productionEntityId": "example_123"
      },
      "status": "200",
      "schemaName": "notification_v1_PromoteChangeResponse"
    },
    {
      "id": "notifications-promoteAllChanges-request",
      "operationId": "promoteAllChanges",
      "operationKey": "notifications:promoteAllChanges",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Promote explicitly selected pending changes; replace changeIds with IDs from get-pending-changes.",
      "payload": {
        "changeIds": [
          "change_123"
        ]
      },
      "schemaName": "notification_v1_services_gateway_v1_PromoteAllChangesRequest"
    },
    {
      "id": "notifications-promoteAllChanges-response",
      "operationId": "promoteAllChanges",
      "operationKey": "notifications:promoteAllChanges",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "promotedCount": 1,
        "promotedIds": [
          "example_123"
        ],
        "errors": [
          {
            "changeId": "example_123",
            "error": "example"
          }
        ]
      },
      "status": "200",
      "schemaName": "notification_v1_PromoteAllChangesResponse"
    },
    {
      "id": "connected-apps-pipedreamCreateConnectToken-request",
      "operationId": "pipedreamCreateConnectToken",
      "operationKey": "connected-apps:pipedreamCreateConnectToken",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create a connection token for the authenticated end user using the configured provider defaults.",
      "payload": {},
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamCreateConnectTokenRequest"
    },
    {
      "id": "connected-apps-pipedreamCreateConnectToken-response",
      "operationId": "pipedreamCreateConnectToken",
      "operationKey": "connected-apps:pipedreamCreateConnectToken",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "token": "example",
        "connectLinkUrl": "https://example.com/resource",
        "expiresAt": "2026-09-16T12:00:00Z"
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamCreateConnectTokenResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-connected-apps-02-request",
      "operationId": "pipedreamCreateConnectToken",
      "operationKey": "connected-apps:pipedreamCreateConnectToken",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Create the authorization link when the customer clicks Connect. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "appSlug": "google_calendar",
        "successRedirectUrl": "https://app.example.com/integrations?ok=1",
        "errorRedirectUrl": "https://app.example.com/integrations?ok=0",
        "state": "picker-session-8f3a"
      },
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamCreateConnectTokenRequest"
    },
    {
      "id": "cookbook-integrations-tools-connections-connected-apps-json-02-response",
      "operationId": "pipedreamCreateConnectToken",
      "operationKey": "connected-apps:pipedreamCreateConnectToken",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Create the authorization link when the customer clicks Connect. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "token": "ctok_5xyz...",
        "connectLinkUrl": "https://pipedream.com/_static/connect.html?token=ctok_5xyz...&connectLink=true&app=google_calendar",
        "expiresAt": "2026-08-10T10:04:11Z"
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamCreateConnectTokenResponse"
    },
    {
      "id": "connected-apps-pipedreamListApps-request",
      "operationId": "pipedreamListApps",
      "operationKey": "connected-apps:pipedreamListApps",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List available connected-app integrations with default paging.",
      "payload": {},
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAppsRequest"
    },
    {
      "id": "connected-apps-pipedreamListApps-response",
      "operationId": "pipedreamListApps",
      "operationKey": "connected-apps:pipedreamListApps",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "data": [
          {
            "id": "example_123",
            "nameSlug": "example",
            "name": "example",
            "authType": "AUTH_TYPE_KEYS",
            "description": "example",
            "imgSrc": "example",
            "customFieldsJson": "{}",
            "categories": [
              "example"
            ],
            "featuredWeight": 1
          }
        ],
        "pageInfo": {
          "count": 1,
          "totalCount": 1,
          "startCursor": "example",
          "endCursor": "example"
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAppsResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-connected-apps-01-request",
      "operationId": "pipedreamListApps",
      "operationKey": "connected-apps:pipedreamListApps",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Find Google Calendar in the catalog. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "q": "cal",
        "sortKey": "APP_SORT_KEY_FEATURED_WEIGHT",
        "sortDirection": "SORT_DIRECTION_DESC",
        "limit": 20
      },
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAppsRequest"
    },
    {
      "id": "cookbook-integrations-tools-connections-connected-apps-json-01-response",
      "operationId": "pipedreamListApps",
      "operationKey": "connected-apps:pipedreamListApps",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Find Google Calendar in the catalog. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "data": [
          {
            "id": "app_1Q5hjR",
            "nameSlug": "google_calendar",
            "name": "Google Calendar",
            "imgSrc": "https://assets.pipedream.net/s.v0/app_1Q5hjR/logo/orig",
            "authType": "AUTH_TYPE_OAUTH",
            "categories": [
              "Productivity"
            ],
            "featuredWeight": 12
          }
        ],
        "pageInfo": {
          "count": 1,
          "totalCount": 34,
          "endCursor": "Y3Vyc29yOjE="
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAppsResponse"
    },
    {
      "id": "connected-apps-pipedreamRetrieveApp-request",
      "operationId": "pipedreamRetrieveApp",
      "operationKey": "connected-apps:pipedreamRetrieveApp",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Look up the GitHub app before starting a connection.",
      "payload": {
        "nameSlug": "github"
      },
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamRetrieveAppRequest"
    },
    {
      "id": "connected-apps-pipedreamRetrieveApp-response",
      "operationId": "pipedreamRetrieveApp",
      "operationKey": "connected-apps:pipedreamRetrieveApp",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "app": {
          "id": "example_123",
          "nameSlug": "example",
          "name": "example",
          "authType": "AUTH_TYPE_KEYS",
          "description": "example",
          "imgSrc": "example",
          "customFieldsJson": "{}",
          "categories": [
            "example"
          ],
          "featuredWeight": 1
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamRetrieveAppResponse"
    },
    {
      "id": "connected-apps-pipedreamListAppCategories-request",
      "operationId": "pipedreamListAppCategories",
      "operationKey": "connected-apps:pipedreamListAppCategories",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List connected-app categories; this request has no selection fields.",
      "payload": {},
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAppCategoriesRequest"
    },
    {
      "id": "connected-apps-pipedreamListAppCategories-response",
      "operationId": "pipedreamListAppCategories",
      "operationKey": "connected-apps:pipedreamListAppCategories",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "data": [
          {
            "id": "example_123",
            "nameSlug": "example",
            "name": "example"
          }
        ],
        "pageInfo": {
          "count": 1,
          "totalCount": 1,
          "startCursor": "example",
          "endCursor": "example"
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAppCategoriesResponse"
    },
    {
      "id": "connected-apps-pipedreamListAccountsForCurrentUser-request",
      "operationId": "pipedreamListAccountsForCurrentUser",
      "operationKey": "connected-apps:pipedreamListAccountsForCurrentUser",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List accounts belonging to the authenticated end user.",
      "payload": {},
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAccountsForCurrentUserRequest"
    },
    {
      "id": "connected-apps-pipedreamListAccountsForCurrentUser-response",
      "operationId": "pipedreamListAccountsForCurrentUser",
      "operationKey": "connected-apps:pipedreamListAccountsForCurrentUser",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "data": [
          {
            "id": "example_123",
            "name": "example",
            "externalUserId": "example_123",
            "healthy": true,
            "app": "example",
            "oauthAppId": "example_123",
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z",
            "credentialsLastRefreshedAt": "2026-09-16T12:00:00Z",
            "credentialsExpiresAt": "2026-09-16T12:00:00Z",
            "error": "example",
            "lastRefreshedAt": "2026-09-16T12:00:00Z",
            "nextRefreshAt": "2026-09-16T12:00:00Z"
          }
        ],
        "pageInfo": {
          "count": 1,
          "totalCount": 1,
          "startCursor": "example",
          "endCursor": "example"
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAccountsForCurrentUserResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-connected-apps-03-request",
      "operationId": "pipedreamListAccountsForCurrentUser",
      "operationKey": "connected-apps:pipedreamListAccountsForCurrentUser",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Confirm the account before showing Connected. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "app": "google_calendar"
      },
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAccountsForCurrentUserRequest"
    },
    {
      "id": "cookbook-integrations-tools-connections-connected-apps-json-03-response",
      "operationId": "pipedreamListAccountsForCurrentUser",
      "operationKey": "connected-apps:pipedreamListAccountsForCurrentUser",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Confirm the account before showing Connected. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "data": [
          {
            "id": "apn_kAHeAr9",
            "name": "user@example.com",
            "app": "google_calendar",
            "healthy": true,
            "createdAt": "2026-08-10T09:14:52Z"
          }
        ],
        "pageInfo": {
          "count": 1,
          "totalCount": 1
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamListAccountsForCurrentUserResponse"
    },
    {
      "id": "connected-apps-pipedreamDeleteAccountForCurrentUser-request",
      "operationId": "pipedreamDeleteAccountForCurrentUser",
      "operationKey": "connected-apps:pipedreamDeleteAccountForCurrentUser",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "accountId": "example_123"
      },
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamDeleteAccountForCurrentUserRequest"
    },
    {
      "id": "connected-apps-pipedreamDeleteAccountForCurrentUser-response",
      "operationId": "pipedreamDeleteAccountForCurrentUser",
      "operationKey": "connected-apps:pipedreamDeleteAccountForCurrentUser",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deleted": true
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamDeleteAccountForCurrentUserResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-connected-apps-05-request",
      "operationId": "pipedreamDeleteAccountForCurrentUser",
      "operationKey": "connected-apps:pipedreamDeleteAccountForCurrentUser",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Disconnect the selected calendar. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "accountId": "apn_kAHeAr9"
      },
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamDeleteAccountForCurrentUserRequest"
    },
    {
      "id": "connected-apps-pipedreamDeleteExternalUserForCurrentUser-request",
      "operationId": "pipedreamDeleteExternalUserForCurrentUser",
      "operationKey": "connected-apps:pipedreamDeleteExternalUserForCurrentUser",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Delete the external connected-app user selected by authentication; no user identifier is accepted in this body.",
      "payload": {},
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamDeleteExternalUserForCurrentUserRequest"
    },
    {
      "id": "connected-apps-pipedreamDeleteExternalUserForCurrentUser-response",
      "operationId": "pipedreamDeleteExternalUserForCurrentUser",
      "operationKey": "connected-apps:pipedreamDeleteExternalUserForCurrentUser",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deleted": true,
        "accountsDeleted": 1
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamDeleteExternalUserForCurrentUserResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-connected-apps-json-04-response",
      "operationId": "pipedreamDeleteExternalUserForCurrentUser",
      "operationKey": "connected-apps:pipedreamDeleteExternalUserForCurrentUser",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Remove integration data when the customer leaves. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "deleted": true,
        "accountsDeleted": 3
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamDeleteExternalUserForCurrentUserResponse"
    },
    {
      "id": "connected-apps-pipedreamProxyForCurrentUser-request",
      "operationId": "pipedreamProxyForCurrentUser",
      "operationKey": "connected-apps:pipedreamProxyForCurrentUser",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace accountId with the authenticated user’s connected GitHub account; request that provider’s profile endpoint.",
      "payload": {
        "accountId": "apn_example",
        "method": "GET",
        "url": "https://api.github.com/user"
      },
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamProxyForCurrentUserRequest"
    },
    {
      "id": "connected-apps-pipedreamProxyForCurrentUser-response",
      "operationId": "pipedreamProxyForCurrentUser",
      "operationKey": "connected-apps:pipedreamProxyForCurrentUser",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "status": 1,
        "headers": {},
        "body": "ZXhhbXBsZQ=="
      },
      "status": "200",
      "schemaName": "integrations_v1_services_gateway_v1_PipedreamProxyForCurrentUserResponse"
    },
    {
      "id": "webhooks-createWebhookEndpoint-request",
      "operationId": "createWebhookEndpoint",
      "operationKey": "webhooks:createWebhookEndpoint",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create a receiver for generation completion; replace the URL with your verified receiver.",
      "payload": {
        "name": "Generation events",
        "url": "https://api.example.com/hooks/travila",
        "eventTypes": [
          "llm.generation_completed"
        ]
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointRequest"
    },
    {
      "id": "webhooks-createWebhookEndpoint-response",
      "operationId": "createWebhookEndpoint",
      "operationKey": "webhooks:createWebhookEndpoint",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "endpoint": {
          "id": "example_123",
          "name": "example",
          "url": "https://example.com/resource",
          "description": "example",
          "status": "ENDPOINT_STATUS_ACTIVE",
          "secret": "example",
          "httpTimeout": 1,
          "rateLimit": 1,
          "rateLimitDuration": "example",
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z"
        },
        "subscription": {
          "id": "example_123",
          "name": "example",
          "endpointId": "https://example.com/resource",
          "eventTypes": [
            "example"
          ],
          "filter": {},
          "retryConfig": {
            "strategy": "RETRY_STRATEGY_LINEAR",
            "retryCount": 1,
            "intervalSeconds": 1
          },
          "createdAt": "2026-09-16T12:00:00Z",
          "externalId": "example_123",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointResponse"
    },
    {
      "id": "cookbook-core-platform-scheduling-build-scheduled-agents-03-request",
      "operationId": "createWebhookEndpoint",
      "operationKey": "webhooks:createWebhookEndpoint",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 5: Subscribe to the results webhook (Optional). Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "scheduled-agent-results",
        "url": "https://api.example.com/hooks/agent-results",
        "description": "Receives assistant messages from scheduled agent runs",
        "eventTypes": [
          "llm.message_published"
        ]
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointRequest"
    },
    {
      "id": "cookbook-integrations-webhooks-endpoints-01-request",
      "operationId": "createWebhookEndpoint",
      "operationKey": "webhooks:createWebhookEndpoint",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 1. Register the receiver for completed runs. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "orders-service",
        "url": "https://api.example.com/hooks/travila",
        "description": "Order pipeline consumer",
        "eventTypes": [
          "llm.generation_completed"
        ]
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointRequest"
    },
    {
      "id": "cookbook-core-platform-scheduling-build-scheduled-agents-json-04-response",
      "operationId": "createWebhookEndpoint",
      "operationKey": "webhooks:createWebhookEndpoint",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 5: Subscribe to the results webhook (Optional). Replace example resource identifiers with your own authorized values.",
      "payload": {
        "endpoint": {
          "id": "ep_abc123",
          "name": "scheduled-agent-results",
          "url": "https://api.example.com/hooks/agent-results",
          "status": "ENDPOINT_STATUS_ACTIVE",
          "secret": "whsec_…"
        },
        "subscription": {
          "id": "sub_def456",
          "endpointId": "ep_abc123",
          "eventTypes": [
            "llm.message_published"
          ]
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookEndpointResponse"
    },
    {
      "id": "webhooks-listWebhookEndpoints-request",
      "operationId": "listWebhookEndpoints",
      "operationKey": "webhooks:listWebhookEndpoints",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List endpoints in the authenticated scope with default paging.",
      "payload": {},
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookEndpointsRequest"
    },
    {
      "id": "webhooks-listWebhookEndpoints-response",
      "operationId": "listWebhookEndpoints",
      "operationKey": "webhooks:listWebhookEndpoints",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "endpoints": [
          {
            "id": "example_123",
            "name": "example",
            "url": "https://example.com/resource",
            "description": "example",
            "status": "ENDPOINT_STATUS_ACTIVE",
            "secret": "example",
            "httpTimeout": 1,
            "rateLimit": 1,
            "rateLimitDuration": "example",
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z"
          }
        ],
        "pagination": {
          "total": 1,
          "page": 1,
          "perPage": 1,
          "totalPages": 1
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookEndpointsResponse"
    },
    {
      "id": "cookbook-integrations-webhooks-endpoints-02-request",
      "operationId": "listWebhookEndpoints",
      "operationKey": "webhooks:listWebhookEndpoints",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Save the signing secret. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "page": 1,
        "perPage": 25
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookEndpointsRequest"
    },
    {
      "id": "webhooks-updateWebhookEndpoint-request",
      "operationId": "updateWebhookEndpoint",
      "operationKey": "webhooks:updateWebhookEndpoint",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Update an existing endpoint after verifying the replacement receiver.",
      "payload": {
        "endpointId": "ep_abc123",
        "url": "https://api.example.com/hooks/travila-v2"
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_UpdateWebhookEndpointRequest"
    },
    {
      "id": "webhooks-updateWebhookEndpoint-response",
      "operationId": "updateWebhookEndpoint",
      "operationKey": "webhooks:updateWebhookEndpoint",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "endpoint": {
          "id": "example_123",
          "name": "example",
          "url": "https://example.com/resource",
          "description": "example",
          "status": "ENDPOINT_STATUS_ACTIVE",
          "secret": "example",
          "httpTimeout": 1,
          "rateLimit": 1,
          "rateLimitDuration": "example",
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_webhookgateway_v1_UpdateWebhookEndpointResponse"
    },
    {
      "id": "webhooks-deleteWebhookEndpoint-request",
      "operationId": "deleteWebhookEndpoint",
      "operationKey": "webhooks:deleteWebhookEndpoint",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use an existing endpointId when retiring a receiver.",
      "payload": {
        "endpointId": "ep_abc123"
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_DeleteWebhookEndpointRequest"
    },
    {
      "id": "webhooks-deleteWebhookEndpoint-response",
      "operationId": "deleteWebhookEndpoint",
      "operationKey": "webhooks:deleteWebhookEndpoint",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "integrations_v1_services_webhookgateway_v1_DeleteWebhookEndpointResponse"
    },
    {
      "id": "webhooks-createWebhookSubscription-request",
      "operationId": "createWebhookSubscription",
      "operationKey": "webhooks:createWebhookSubscription",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Subscribe an existing endpoint that does not already have a live subscription.",
      "payload": {
        "endpointId": "ep_abc123",
        "eventTypes": [
          "llm.generation_completed"
        ]
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookSubscriptionRequest"
    },
    {
      "id": "webhooks-createWebhookSubscription-response",
      "operationId": "createWebhookSubscription",
      "operationKey": "webhooks:createWebhookSubscription",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "subscription": {
          "id": "example_123",
          "name": "example",
          "endpointId": "https://example.com/resource",
          "eventTypes": [
            "example"
          ],
          "filter": {},
          "retryConfig": {
            "strategy": "RETRY_STRATEGY_LINEAR",
            "retryCount": 1,
            "intervalSeconds": 1
          },
          "createdAt": "2026-09-16T12:00:00Z",
          "externalId": "example_123",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_webhookgateway_v1_CreateWebhookSubscriptionResponse"
    },
    {
      "id": "webhooks-listWebhookSubscriptions-request",
      "operationId": "listWebhookSubscriptions",
      "operationKey": "webhooks:listWebhookSubscriptions",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List subscriptions for an existing endpoint.",
      "payload": {
        "endpointId": "ep_abc123",
        "page": 1,
        "perPage": 25
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookSubscriptionsRequest"
    },
    {
      "id": "webhooks-listWebhookSubscriptions-response",
      "operationId": "listWebhookSubscriptions",
      "operationKey": "webhooks:listWebhookSubscriptions",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "subscriptions": [
          {
            "id": "example_123",
            "name": "example",
            "endpointId": "https://example.com/resource",
            "eventTypes": [
              "example"
            ],
            "filter": {},
            "retryConfig": {
              "strategy": "RETRY_STRATEGY_LINEAR",
              "retryCount": 1,
              "intervalSeconds": 1
            },
            "createdAt": "2026-09-16T12:00:00Z",
            "externalId": "example_123",
            "updatedAt": "2026-09-16T12:00:00Z"
          }
        ],
        "pagination": {
          "total": 1,
          "page": 1,
          "perPage": 1,
          "totalPages": 1
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookSubscriptionsResponse"
    },
    {
      "id": "webhooks-deleteWebhookSubscription-request",
      "operationId": "deleteWebhookSubscription",
      "operationKey": "webhooks:deleteWebhookSubscription",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "subscriptionId": "example_123"
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_DeleteWebhookSubscriptionRequest"
    },
    {
      "id": "webhooks-deleteWebhookSubscription-response",
      "operationId": "deleteWebhookSubscription",
      "operationKey": "webhooks:deleteWebhookSubscription",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "integrations_v1_services_webhookgateway_v1_DeleteWebhookSubscriptionResponse"
    },
    {
      "id": "webhooks-listWebhookDeliveries-request",
      "operationId": "listWebhookDeliveries",
      "operationKey": "webhooks:listWebhookDeliveries",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Inspect a bounded page of deliveries for an existing endpoint.",
      "payload": {
        "endpointId": "ep_abc123",
        "page": 1,
        "perPage": 25
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookDeliveriesRequest"
    },
    {
      "id": "webhooks-listWebhookDeliveries-response",
      "operationId": "listWebhookDeliveries",
      "operationKey": "webhooks:listWebhookDeliveries",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deliveries": [
          {
            "id": "example_123",
            "eventId": "example_123",
            "endpointId": "https://example.com/resource",
            "status": "DELIVERY_STATUS_SCHEDULED",
            "attempts": 1,
            "eventType": "example",
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z",
            "httpStatus": 1,
            "responseData": "example",
            "error": "example"
          }
        ],
        "pagination": {
          "total": 1,
          "page": 1,
          "perPage": 1,
          "totalPages": 1
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookDeliveriesResponse"
    },
    {
      "id": "cookbook-integrations-webhooks-deliveries-01-request",
      "operationId": "listWebhookDeliveries",
      "operationKey": "webhooks:listWebhookDeliveries",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 1. Find where the update stopped. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "endpointId": "ep_abc123",
        "status": "DELIVERY_STATUS_FAILED",
        "createdAfter": "2026-08-01T00:00:00Z",
        "perPage": 50
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_ListWebhookDeliveriesRequest"
    },
    {
      "id": "webhooks-retryWebhookDelivery-request",
      "operationId": "retryWebhookDelivery",
      "operationKey": "webhooks:retryWebhookDelivery",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "deliveryId": "example_123"
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_RetryWebhookDeliveryRequest"
    },
    {
      "id": "webhooks-retryWebhookDelivery-response",
      "operationId": "retryWebhookDelivery",
      "operationKey": "webhooks:retryWebhookDelivery",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "delivery": {
          "id": "example_123",
          "eventId": "example_123",
          "endpointId": "https://example.com/resource",
          "status": "DELIVERY_STATUS_SCHEDULED",
          "attempts": 1,
          "eventType": "example",
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z",
          "httpStatus": 1,
          "responseData": "example",
          "error": "example"
        }
      },
      "status": "200",
      "schemaName": "integrations_v1_services_webhookgateway_v1_RetryWebhookDeliveryResponse"
    },
    {
      "id": "cookbook-integrations-webhooks-deliveries-02-request",
      "operationId": "retryWebhookDelivery",
      "operationKey": "webhooks:retryWebhookDelivery",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 3. Replay the original eligible delivery. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "deliveryId": "del_xyz789"
      },
      "schemaName": "integrations_v1_services_webhookgateway_v1_RetryWebhookDeliveryRequest"
    },
    {
      "id": "agent-profiles-createAgentProfile-request",
      "operationId": "createAgentProfile",
      "operationKey": "agent-profiles:createAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create a reusable support profile; choose a new profileId in your project.",
      "payload": {
        "profile": {
          "profileId": "support-assistant",
          "name": "Support assistant",
          "whenToUse": "Help users answer product questions.",
          "generationConfig": {
            "systemPrompt": "Answer clearly using the supplied product information."
          }
        }
      },
      "schemaName": "llm_v1_services_agent_profile_v1_CreateAgentProfileRequest"
    },
    {
      "id": "agent-profiles-createAgentProfile-response",
      "operationId": "createAgentProfile",
      "operationKey": "agent-profiles:createAgentProfile",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "profile": {
          "profileId": "example_123",
          "name": "example",
          "description": "example",
          "whenToUse": "example",
          "keywords": [
            "example_123"
          ],
          "enabled": true,
          "generationConfig": {
            "model": "example",
            "models": [
              "example"
            ],
            "systemPrompt": "Example text",
            "transforms": [
              "example"
            ],
            "temperature": 1,
            "topP": 1,
            "maxOutputTokens": 1,
            "frequencyPenalty": 1,
            "presencePenalty": 1,
            "stopSequences": [
              "example"
            ],
            "seed": "1",
            "allowParallelToolCalls": true,
            "topK": 1,
            "repetitionPenalty": 1,
            "topLogprobs": 1,
            "minP": 1,
            "topA": 1,
            "user": "example",
            "modalities": [
              "MODALITY_TEXT"
            ],
            "languagePreference": "en-US",
            "requestTimeoutSeconds": 1,
            "clearTools": true
          },
          "mcpServers": [
            {
              "serverId": "example_123",
              "enabled": true,
              "priority": 1,
              "allowlistToolPatterns": [
                "example"
              ],
              "blocklistToolPatterns": [
                "example"
              ]
            }
          ],
          "variableSpecs": [
            {
              "name": "example",
              "description": "example",
              "required": true,
              "defaultValue": "example",
              "type": "VAR_TYPE_STRING"
            }
          ],
          "version": 1
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_CreateAgentProfileResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-01-request",
      "operationId": "createAgentProfile",
      "operationKey": "agent-profiles:createAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 1: Save the assistant instructions. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profile": {
          "profileId": "nutrition_coach",
          "name": "Nutrition Coach",
          "description": "Food, meals and macros.",
          "whenToUse": "Use when the user asks about food, meals, or macros.",
          "keywords": [
            "nutrition",
            "food",
            "macros"
          ],
          "enabled": true,
          "generationConfig": {
            "model": "YOUR_MODEL_ID",
            "systemPrompt": "You are a nutrition coach. Be concise and practical.",
            "temperature": 0.4
          }
        }
      },
      "schemaName": "llm_v1_services_agent_profile_v1_CreateAgentProfileRequest"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-json-01-response",
      "operationId": "createAgentProfile",
      "operationKey": "agent-profiles:createAgentProfile",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 1: Save the assistant instructions. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profile": {
          "profileId": "nutrition_coach",
          "name": "Nutrition Coach",
          "description": "Food, meals and macros.",
          "whenToUse": "Use when the user asks about food, meals, or macros.",
          "keywords": [
            "nutrition",
            "food",
            "macros"
          ],
          "enabled": true,
          "generationConfig": {
            "model": "YOUR_MODEL_ID",
            "systemPrompt": "You are a nutrition coach. Be concise and practical.",
            "temperature": 0.4
          },
          "version": 1
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_CreateAgentProfileResponse"
    },
    {
      "id": "agent-profiles-getAgentProfile-request",
      "operationId": "getAgentProfile",
      "operationKey": "agent-profiles:getAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use the profileId of an existing profile in your project.",
      "payload": {
        "profileId": "support-assistant"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileRequest"
    },
    {
      "id": "agent-profiles-getAgentProfile-response",
      "operationId": "getAgentProfile",
      "operationKey": "agent-profiles:getAgentProfile",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "profile": {
          "profileId": "example_123",
          "name": "example",
          "description": "example",
          "whenToUse": "example",
          "keywords": [
            "example_123"
          ],
          "enabled": true,
          "generationConfig": {
            "model": "example",
            "models": [
              "example"
            ],
            "systemPrompt": "Example text",
            "transforms": [
              "example"
            ],
            "temperature": 1,
            "topP": 1,
            "maxOutputTokens": 1,
            "frequencyPenalty": 1,
            "presencePenalty": 1,
            "stopSequences": [
              "example"
            ],
            "seed": "1",
            "allowParallelToolCalls": true,
            "topK": 1,
            "repetitionPenalty": 1,
            "topLogprobs": 1,
            "minP": 1,
            "topA": 1,
            "user": "example",
            "modalities": [
              "MODALITY_TEXT"
            ],
            "languagePreference": "en-US",
            "requestTimeoutSeconds": 1,
            "clearTools": true
          },
          "mcpServers": [
            {
              "serverId": "example_123",
              "enabled": true,
              "priority": 1,
              "allowlistToolPatterns": [
                "example"
              ],
              "blocklistToolPatterns": [
                "example"
              ]
            }
          ],
          "variableSpecs": [
            {
              "name": "example",
              "description": "example",
              "required": true,
              "defaultValue": "example",
              "type": "VAR_TYPE_STRING"
            }
          ],
          "version": 1
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-02-request",
      "operationId": "getAgentProfile",
      "operationKey": "agent-profiles:getAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 2: Confirm what you saved. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profileId": "nutrition_coach"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileRequest"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-json-02-request",
      "operationId": "getAgentProfile",
      "operationKey": "agent-profiles:getAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 2: Confirm what you saved. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profileId": "nutrition_coach",
        "version": 3
      },
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileRequest"
    },
    {
      "id": "agent-profiles-listAgentProfiles-request",
      "operationId": "listAgentProfiles",
      "operationKey": "agent-profiles:listAgentProfiles",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read a bounded first page from the project library.",
      "payload": {
        "page": 1,
        "pageSize": 20
      },
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfilesRequest"
    },
    {
      "id": "agent-profiles-listAgentProfiles-response",
      "operationId": "listAgentProfiles",
      "operationKey": "agent-profiles:listAgentProfiles",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "profiles": [
          {
            "profileId": "example_123",
            "name": "example",
            "description": "example",
            "whenToUse": "example",
            "keywords": [
              "example_123"
            ],
            "enabled": true,
            "generationConfig": {
              "model": "example",
              "models": [
                "example"
              ],
              "systemPrompt": "Example text",
              "transforms": [
                "example"
              ],
              "temperature": 1,
              "topP": 1,
              "maxOutputTokens": 1,
              "frequencyPenalty": 1,
              "presencePenalty": 1,
              "stopSequences": [
                "example"
              ],
              "seed": "1",
              "allowParallelToolCalls": true,
              "topK": 1,
              "repetitionPenalty": 1,
              "topLogprobs": 1,
              "minP": 1,
              "topA": 1,
              "user": "example",
              "modalities": [
                "MODALITY_TEXT"
              ],
              "languagePreference": "en-US",
              "requestTimeoutSeconds": 1,
              "clearTools": true
            },
            "mcpServers": [
              {
                "serverId": "example_123",
                "enabled": true,
                "priority": 1,
                "allowlistToolPatterns": [
                  "example"
                ],
                "blocklistToolPatterns": [
                  "example"
                ]
              }
            ],
            "variableSpecs": [
              {
                "name": "example",
                "description": "example",
                "required": true,
                "defaultValue": "example",
                "type": "VAR_TYPE_STRING"
              }
            ],
            "version": 1
          }
        ],
        "totalCount": 1,
        "hasMore": true
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfilesResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-06-request",
      "operationId": "listAgentProfiles",
      "operationKey": "agent-profiles:listAgentProfiles",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: inventory profiles before a shared change. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "page": 1,
        "pageSize": 25
      },
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfilesRequest"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-json-05-response",
      "operationId": "listAgentProfiles",
      "operationKey": "agent-profiles:listAgentProfiles",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Variant: inventory profiles before a shared change. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profiles": [
          {
            "profileId": "nutrition_coach",
            "name": "Nutrition Coach",
            "version": 3
          }
        ],
        "totalCount": 1,
        "hasMore": false
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfilesResponse"
    },
    {
      "id": "agent-profiles-updateAgentProfile-request",
      "operationId": "updateAgentProfile",
      "operationKey": "agent-profiles:updateAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Rename an existing profile without replacing its generation configuration.",
      "payload": {
        "profileId": "support-assistant",
        "profile": {
          "name": "Customer support assistant"
        },
        "updateMask": "name"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_UpdateAgentProfileRequest"
    },
    {
      "id": "agent-profiles-updateAgentProfile-response",
      "operationId": "updateAgentProfile",
      "operationKey": "agent-profiles:updateAgentProfile",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "profile": {
          "profileId": "example_123",
          "name": "example",
          "description": "example",
          "whenToUse": "example",
          "keywords": [
            "example_123"
          ],
          "enabled": true,
          "generationConfig": {
            "model": "example",
            "models": [
              "example"
            ],
            "systemPrompt": "Example text",
            "transforms": [
              "example"
            ],
            "temperature": 1,
            "topP": 1,
            "maxOutputTokens": 1,
            "frequencyPenalty": 1,
            "presencePenalty": 1,
            "stopSequences": [
              "example"
            ],
            "seed": "1",
            "allowParallelToolCalls": true,
            "topK": 1,
            "repetitionPenalty": 1,
            "topLogprobs": 1,
            "minP": 1,
            "topA": 1,
            "user": "example",
            "modalities": [
              "MODALITY_TEXT"
            ],
            "languagePreference": "en-US",
            "requestTimeoutSeconds": 1,
            "clearTools": true
          },
          "mcpServers": [
            {
              "serverId": "example_123",
              "enabled": true,
              "priority": 1,
              "allowlistToolPatterns": [
                "example"
              ],
              "blocklistToolPatterns": [
                "example"
              ]
            }
          ],
          "variableSpecs": [
            {
              "name": "example",
              "description": "example",
              "required": true,
              "defaultValue": "example",
              "type": "VAR_TYPE_STRING"
            }
          ],
          "version": 1
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_UpdateAgentProfileResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-03-request",
      "operationId": "updateAgentProfile",
      "operationKey": "agent-profiles:updateAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recipe: change the response style without replacing the profile. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profileId": "nutrition_coach",
        "profile": {
          "generationConfig": {
            "temperature": 0.2
          }
        },
        "updateMask": "generationConfig.temperature"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_UpdateAgentProfileRequest"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-json-06-request",
      "operationId": "updateAgentProfile",
      "operationKey": "agent-profiles:updateAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Retire an assistant without stranding its conversations. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profileId": "nutrition_coach",
        "profile": {
          "enabled": false
        },
        "updateMask": "enabled"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_UpdateAgentProfileRequest"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-prompt-fragments-json-02-request",
      "operationId": "updateAgentProfile",
      "operationKey": "agent-profiles:updateAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 1: Create the block and include it in the profile. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profileId": "nutrition_coach",
        "profile": {
          "generationConfig": {
            "systemPrompt": "{{template \"safety\" .}}\n\nYou are a nutrition coach for {{.userName}}."
          }
        },
        "updateMask": "generationConfig.systemPrompt"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_UpdateAgentProfileRequest"
    },
    {
      "id": "agent-profiles-deleteAgentProfile-request",
      "operationId": "deleteAgentProfile",
      "operationKey": "agent-profiles:deleteAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use the profileId of an existing profile in your project.",
      "payload": {
        "profileId": "support-assistant"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_DeleteAgentProfileRequest"
    },
    {
      "id": "agent-profiles-deleteAgentProfile-response",
      "operationId": "deleteAgentProfile",
      "operationKey": "agent-profiles:deleteAgentProfile",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_DeleteAgentProfileResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-07-request",
      "operationId": "deleteAgentProfile",
      "operationKey": "agent-profiles:deleteAgentProfile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Retire an assistant without stranding its conversations. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profileId": "nutrition_coach"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_DeleteAgentProfileRequest"
    },
    {
      "id": "agent-profiles-getAgentProfileLibrary-request",
      "operationId": "getAgentProfileLibrary",
      "operationKey": "agent-profiles:getAgentProfileLibrary",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read the enabled profile library in the authenticated project; no additional body fields are needed.",
      "payload": {},
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileLibraryRequest"
    },
    {
      "id": "agent-profiles-getAgentProfileLibrary-response",
      "operationId": "getAgentProfileLibrary",
      "operationKey": "agent-profiles:getAgentProfileLibrary",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "library": {
          "profiles": [
            {
              "profileId": "example_123",
              "name": "example",
              "description": "example",
              "whenToUse": "example",
              "keywords": [
                "example_123"
              ],
              "enabled": true
            }
          ],
          "defaultProfileId": "example_123"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileLibraryResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-json-04-response",
      "operationId": "getAgentProfileLibrary",
      "operationKey": "agent-profiles:getAgentProfileLibrary",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Variant: let the user choose an assistant. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "library": {
          "profiles": [
            {
              "profileId": "nutrition_coach",
              "name": "Nutrition Coach",
              "description": "Food, meals and macros.",
              "whenToUse": "Use when the user asks about food, meals, or macros.",
              "keywords": [
                "nutrition",
                "food",
                "macros"
              ],
              "enabled": true
            }
          ],
          "defaultProfileId": "generalist"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_GetAgentProfileLibraryResponse"
    },
    {
      "id": "agent-profiles-listAgentProfileVersions-request",
      "operationId": "listAgentProfileVersions",
      "operationKey": "agent-profiles:listAgentProfileVersions",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use the profileId of an existing profile in your project.",
      "payload": {
        "profileId": "support-assistant"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfileVersionsRequest"
    },
    {
      "id": "agent-profiles-listAgentProfileVersions-response",
      "operationId": "listAgentProfileVersions",
      "operationKey": "agent-profiles:listAgentProfileVersions",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "versions": [
          {
            "version": 1,
            "createdAt": "2026-09-16T12:00:00Z"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfileVersionsResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-04-request",
      "operationId": "listAgentProfileVersions",
      "operationKey": "agent-profiles:listAgentProfileVersions",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recipe: investigate a change and restore earlier content. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profileId": "nutrition_coach"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfileVersionsRequest"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-json-03-response",
      "operationId": "listAgentProfileVersions",
      "operationKey": "agent-profiles:listAgentProfileVersions",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Recipe: investigate a change and restore earlier content. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "versions": [
          {
            "version": 3,
            "createdAt": "2026-08-14T10:22:41Z"
          },
          {
            "version": 2,
            "createdAt": "2026-07-02T16:04:09Z"
          },
          {
            "version": 1,
            "createdAt": "2026-06-19T09:11:55Z"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_ListAgentProfileVersionsResponse"
    },
    {
      "id": "agent-profiles-getPromptFragmentSet-request",
      "operationId": "getPromptFragmentSet",
      "operationKey": "agent-profiles:getPromptFragmentSet",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "setVersion": 1
      },
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentSetRequest"
    },
    {
      "id": "agent-profiles-getPromptFragmentSet-response",
      "operationId": "getPromptFragmentSet",
      "operationKey": "agent-profiles:getPromptFragmentSet",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "setVersion": 1,
        "fragments": [
          {
            "fragmentId": "example_123",
            "name": "example",
            "content": "Example text"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentSetResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-prompt-fragments-05-request",
      "operationId": "getPromptFragmentSet",
      "operationKey": "agent-profiles:getPromptFragmentSet",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recover the text used before a change. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "setVersion": 7
      },
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentSetRequest"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-prompt-fragments-json-04-response",
      "operationId": "getPromptFragmentSet",
      "operationKey": "agent-profiles:getPromptFragmentSet",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Recover the text used before a change. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "setVersion": 7,
        "fragments": [
          {
            "fragmentId": "safety",
            "name": "Safety rules",
            "content": "Never give medical advice. Refer the user to a clinician when asked."
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentSetResponse"
    },
    {
      "id": "agent-profiles-createPromptFragment-request",
      "operationId": "createPromptFragment",
      "operationKey": "agent-profiles:createPromptFragment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create a reusable prompt fragment with a new fragmentId.",
      "payload": {
        "fragment": {
          "fragmentId": "answer-style",
          "name": "Answer style",
          "content": "Use short paragraphs and explain any assumptions."
        }
      },
      "schemaName": "llm_v1_services_agent_profile_v1_CreatePromptFragmentRequest"
    },
    {
      "id": "agent-profiles-createPromptFragment-response",
      "operationId": "createPromptFragment",
      "operationKey": "agent-profiles:createPromptFragment",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "fragment": {
          "fragmentId": "example_123",
          "name": "example",
          "content": "Example text"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_CreatePromptFragmentResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-prompt-fragments-01-request",
      "operationId": "createPromptFragment",
      "operationKey": "agent-profiles:createPromptFragment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 1: Create the block and include it in the profile. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fragment": {
          "fragmentId": "safety",
          "name": "Safety rules",
          "content": "Never give medical advice. Refer the user to a clinician when asked."
        }
      },
      "schemaName": "llm_v1_services_agent_profile_v1_CreatePromptFragmentRequest"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-prompt-fragments-json-01-response",
      "operationId": "createPromptFragment",
      "operationKey": "agent-profiles:createPromptFragment",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 1: Create the block and include it in the profile. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fragment": {
          "fragmentId": "safety",
          "name": "Safety rules",
          "content": "Never give medical advice. Refer the user to a clinician when asked."
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_CreatePromptFragmentResponse"
    },
    {
      "id": "agent-profiles-getPromptFragment-request",
      "operationId": "getPromptFragment",
      "operationKey": "agent-profiles:getPromptFragment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use the fragmentId of an existing prompt fragment in your project.",
      "payload": {
        "fragmentId": "answer-style"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentRequest"
    },
    {
      "id": "agent-profiles-getPromptFragment-response",
      "operationId": "getPromptFragment",
      "operationKey": "agent-profiles:getPromptFragment",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "fragment": {
          "fragmentId": "example_123",
          "name": "example",
          "content": "Example text"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-prompt-fragments-02-request",
      "operationId": "getPromptFragment",
      "operationKey": "agent-profiles:getPromptFragment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 2: Check the sources and record their set version. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fragmentId": "safety"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_GetPromptFragmentRequest"
    },
    {
      "id": "agent-profiles-listPromptFragments-request",
      "operationId": "listPromptFragments",
      "operationKey": "agent-profiles:listPromptFragments",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read a bounded first page from the project library.",
      "payload": {
        "page": 1,
        "pageSize": 20
      },
      "schemaName": "llm_v1_services_agent_profile_v1_ListPromptFragmentsRequest"
    },
    {
      "id": "agent-profiles-listPromptFragments-response",
      "operationId": "listPromptFragments",
      "operationKey": "agent-profiles:listPromptFragments",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "fragments": [
          {
            "fragmentId": "example_123",
            "name": "example",
            "content": "Example text"
          }
        ],
        "totalCount": 1,
        "hasMore": true,
        "setVersion": 1
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_ListPromptFragmentsResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-prompt-fragments-03-request",
      "operationId": "listPromptFragments",
      "operationKey": "agent-profiles:listPromptFragments",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 2: Check the sources and record their set version. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "page": 1,
        "pageSize": 25
      },
      "schemaName": "llm_v1_services_agent_profile_v1_ListPromptFragmentsRequest"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-prompt-fragments-json-03-response",
      "operationId": "listPromptFragments",
      "operationKey": "agent-profiles:listPromptFragments",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 2: Check the sources and record their set version. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fragments": [
          {
            "fragmentId": "safety",
            "name": "Safety rules",
            "content": "Never give medical advice. Refer the user to a clinician when asked."
          }
        ],
        "totalCount": 1,
        "hasMore": false,
        "setVersion": 7
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_ListPromptFragmentsResponse"
    },
    {
      "id": "agent-profiles-updatePromptFragment-request",
      "operationId": "updatePromptFragment",
      "operationKey": "agent-profiles:updatePromptFragment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace the content of an existing fragment, preserving its other fields.",
      "payload": {
        "fragmentId": "answer-style",
        "fragment": {
          "content": "Use short paragraphs and include the next action."
        },
        "updateMask": "content"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_UpdatePromptFragmentRequest"
    },
    {
      "id": "agent-profiles-updatePromptFragment-response",
      "operationId": "updatePromptFragment",
      "operationKey": "agent-profiles:updatePromptFragment",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "fragment": {
          "fragmentId": "example_123",
          "name": "example",
          "content": "Example text"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_UpdatePromptFragmentResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-prompt-fragments-04-request",
      "operationId": "updatePromptFragment",
      "operationKey": "agent-profiles:updatePromptFragment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recipe: change shared wording across the assistants. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fragmentId": "safety",
        "fragment": {
          "content": "Never give medical or dosage advice. Refer the user to a clinician."
        },
        "updateMask": "content"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_UpdatePromptFragmentRequest"
    },
    {
      "id": "agent-profiles-deletePromptFragment-request",
      "operationId": "deletePromptFragment",
      "operationKey": "agent-profiles:deletePromptFragment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use the fragmentId of an existing prompt fragment in your project.",
      "payload": {
        "fragmentId": "answer-style"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_DeletePromptFragmentRequest"
    },
    {
      "id": "agent-profiles-deletePromptFragment-response",
      "operationId": "deletePromptFragment",
      "operationKey": "agent-profiles:deletePromptFragment",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_DeletePromptFragmentResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-prompt-fragments-06-request",
      "operationId": "deletePromptFragment",
      "operationKey": "agent-profiles:deletePromptFragment",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Retire a shared block without leaving broken includes. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fragmentId": "safety"
      },
      "schemaName": "llm_v1_services_agent_profile_v1_DeletePromptFragmentRequest"
    },
    {
      "id": "agent-profiles-importAgentProfiles-request",
      "operationId": "importAgentProfiles",
      "operationKey": "agent-profiles:importAgentProfiles",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Import one source template as a new profile; use overwrite only when replacement is intended.",
      "payload": {
        "templates": [
          {
            "profileId": "support-assistant",
            "name": "Support assistant",
            "whenToUse": "Help users answer product questions.",
            "sourceDsl": "Answer clearly using the supplied product information."
          }
        ]
      },
      "schemaName": "llm_v1_services_agent_profile_v1_ImportAgentProfilesRequest"
    },
    {
      "id": "agent-profiles-importAgentProfiles-response",
      "operationId": "importAgentProfiles",
      "operationKey": "agent-profiles:importAgentProfiles",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "profiles": [
          {
            "profileId": "example_123",
            "name": "example",
            "description": "example",
            "whenToUse": "example",
            "keywords": [
              "example_123"
            ],
            "enabled": true,
            "generationConfig": {
              "model": "example",
              "models": [
                "example"
              ],
              "systemPrompt": "Example text",
              "transforms": [
                "example"
              ],
              "temperature": 1,
              "topP": 1,
              "maxOutputTokens": 1,
              "frequencyPenalty": 1,
              "presencePenalty": 1,
              "stopSequences": [
                "example"
              ],
              "seed": "1",
              "allowParallelToolCalls": true,
              "topK": 1,
              "repetitionPenalty": 1,
              "topLogprobs": 1,
              "minP": 1,
              "topA": 1,
              "user": "example",
              "modalities": [
                "MODALITY_TEXT"
              ],
              "languagePreference": "en-US",
              "requestTimeoutSeconds": 1,
              "clearTools": true
            },
            "mcpServers": [
              {
                "serverId": "example_123",
                "enabled": true,
                "priority": 1,
                "allowlistToolPatterns": [
                  "example"
                ],
                "blocklistToolPatterns": [
                  "example"
                ]
              }
            ],
            "variableSpecs": [
              {
                "name": "example",
                "description": "example",
                "required": true,
                "defaultValue": "example",
                "type": "VAR_TYPE_STRING"
              }
            ],
            "version": 1
          }
        ],
        "fragments": [
          {
            "fragmentId": "example_123",
            "name": "example",
            "content": "Example text"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_ImportAgentProfilesResponse"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-08-request",
      "operationId": "importAgentProfiles",
      "operationKey": "agent-profiles:importAgentProfiles",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: migrate an existing prompt library. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "templates": [
          {
            "profileId": "nutrition_coach",
            "name": "Nutrition Coach",
            "whenToUse": "Use when the user asks about food, meals, or macros.",
            "keywords": [
              "nutrition"
            ],
            "sourceDsl": "@include _shared/safety.txt\n\nYou are a nutrition coach for {{user_name}}.",
            "generationConfig": {
              "model": "YOUR_MODEL_ID"
            }
          }
        ],
        "fragments": [
          {
            "fragmentId": "safety",
            "name": "Safety rules",
            "path": "_shared/safety.txt",
            "sourceDsl": "Never give medical advice."
          }
        ],
        "emitFragments": true
      },
      "schemaName": "llm_v1_services_agent_profile_v1_ImportAgentProfilesRequest"
    },
    {
      "id": "cookbook-managed-agents-profiles-prompts-index-json-07-response",
      "operationId": "importAgentProfiles",
      "operationKey": "agent-profiles:importAgentProfiles",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Variant: migrate an existing prompt library. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "profiles": [
          {
            "profileId": "nutrition_coach",
            "version": 1
          }
        ],
        "fragments": [
          {
            "fragmentId": "safety",
            "name": "Safety rules"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_agent_profile_v1_ImportAgentProfilesResponse"
    },
    {
      "id": "end-users-updateLocation-request",
      "operationId": "updateLocation",
      "operationKey": "end-users:updateLocation",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Set the authenticated end user’s location to the supplied coordinates.",
      "payload": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateLocationRequest"
    },
    {
      "id": "end-users-updateLocation-response",
      "operationId": "updateLocation",
      "operationKey": "end-users:updateLocation",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "location": {
          "latitude": 1,
          "longitude": 1,
          "city": "example",
          "timezone": "example",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_enduser_v1_UpdateLocationResponse"
    },
    {
      "id": "cookbook-core-platform-identity-access-end-users-05-request",
      "operationId": "updateLocation",
      "operationKey": "end-users:updateLocation",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: use location for local-time context. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "latitude": 51.5072,
        "longitude": -0.1276
      },
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateLocationRequest"
    },
    {
      "id": "cookbook-core-platform-identity-access-end-users-json-06-response",
      "operationId": "updateLocation",
      "operationKey": "end-users:updateLocation",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Variant: use location for local-time context. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "location": {
          "latitude": 51.5072,
          "longitude": -0.1276,
          "timezone": "Europe/London",
          "updatedAt": "2026-08-14T09:31:02Z"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_enduser_v1_UpdateLocationResponse"
    },
    {
      "id": "end-users-updateLocale-request",
      "operationId": "updateLocale",
      "operationKey": "end-users:updateLocale",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Set the authenticated end user’s locale override.",
      "payload": {
        "locale": "en-US"
      },
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateLocaleRequest"
    },
    {
      "id": "end-users-updateLocale-response",
      "operationId": "updateLocale",
      "operationKey": "end-users:updateLocale",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "platform_v1_services_enduser_v1_UpdateLocaleResponse"
    },
    {
      "id": "cookbook-core-platform-identity-access-end-users-02-request",
      "operationId": "updateLocale",
      "operationKey": "end-users:updateLocale",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 2. Save the user’s preferred language. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "locale": "es-MX"
      },
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateLocaleRequest"
    },
    {
      "id": "cookbook-core-platform-identity-access-end-users-json-02-request",
      "operationId": "updateLocale",
      "operationKey": "end-users:updateLocale",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 2. Save the user’s preferred language. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "locale": ""
      },
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateLocaleRequest"
    },
    {
      "id": "end-users-updateDefaultGenerationConfig-request",
      "operationId": "updateDefaultGenerationConfig",
      "operationKey": "end-users:updateDefaultGenerationConfig",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "config": {
          "languagePreference": "en-US"
        }
      },
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateDefaultGenerationConfigRequest"
    },
    {
      "id": "end-users-updateDefaultGenerationConfig-response",
      "operationId": "updateDefaultGenerationConfig",
      "operationKey": "end-users:updateDefaultGenerationConfig",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "platform_v1_services_enduser_v1_UpdateDefaultGenerationConfigResponse"
    },
    {
      "id": "cookbook-core-platform-identity-access-end-users-03-request",
      "operationId": "updateDefaultGenerationConfig",
      "operationKey": "end-users:updateDefaultGenerationConfig",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 3. Offer supported model and response preferences. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "config": {
          "model": "google/gemini-3.6-flash",
          "temperature": 0.4,
          "maxOutputTokens": 2048,
          "languagePreference": "es"
        }
      },
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateDefaultGenerationConfigRequest"
    },
    {
      "id": "end-users-updateMetadata-request",
      "operationId": "updateMetadata",
      "operationKey": "end-users:updateMetadata",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Merge a metadata key for the authenticated end user.",
      "payload": {
        "metadata": {
          "preferred_destination": "Paris"
        }
      },
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateMetadataRequest"
    },
    {
      "id": "end-users-updateMetadata-response",
      "operationId": "updateMetadata",
      "operationKey": "end-users:updateMetadata",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "platform_v1_services_enduser_v1_UpdateMetadataResponse"
    },
    {
      "id": "cookbook-core-platform-identity-access-end-users-04-request",
      "operationId": "updateMetadata",
      "operationKey": "end-users:updateMetadata",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: remember a display preference. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "metadata": {
          "preferredView": "compact",
          "dismissedWelcome": "true"
        }
      },
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateMetadataRequest"
    },
    {
      "id": "cookbook-core-platform-identity-access-end-users-json-05-request",
      "operationId": "updateMetadata",
      "operationKey": "end-users:updateMetadata",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: remember a display preference. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "metadata": {
          "dismissedWelcome": ""
        }
      },
      "schemaName": "platform_v1_services_enduser_gateway_v1_UpdateMetadataRequest"
    },
    {
      "id": "end-users-getEndUser-request",
      "operationId": "getEndUser",
      "operationKey": "end-users:getEndUser",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read the end user selected by authentication; no user identifier is accepted in this body.",
      "payload": {},
      "schemaName": "platform_v1_services_enduser_gateway_v1_GetEndUserRequest"
    },
    {
      "id": "end-users-getEndUser-response",
      "operationId": "getEndUser",
      "operationKey": "end-users:getEndUser",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "endUser": {
          "subject": "example",
          "tenantId": "example_123",
          "issuer": "example",
          "projectId": "example_123",
          "email": "user@example.com",
          "emailVerified": true,
          "name": "example",
          "givenName": "example",
          "familyName": "example",
          "preferredUsername": "example",
          "picture": "example",
          "phoneNumber": "example",
          "phoneNumberVerified": true,
          "signInProvider": "example_123",
          "authMethod": "example",
          "locale": "en-US",
          "zoneinfo": "example",
          "customClaims": {},
          "location": {
            "latitude": 1,
            "longitude": 1,
            "city": "example",
            "timezone": "example"
          },
          "localeOverride": "en-US",
          "defaultGenerationConfig": {
            "model": "example",
            "models": [
              "example"
            ],
            "systemPrompt": "Example text",
            "transforms": [
              "example"
            ],
            "temperature": 1,
            "topP": 1,
            "maxOutputTokens": 1,
            "frequencyPenalty": 1,
            "presencePenalty": 1,
            "stopSequences": [
              "example"
            ],
            "seed": "1",
            "allowParallelToolCalls": true,
            "topK": 1,
            "repetitionPenalty": 1,
            "topLogprobs": 1,
            "minP": 1,
            "topA": 1,
            "user": "example",
            "modalities": [
              "MODALITY_TEXT"
            ],
            "languagePreference": "en-US",
            "requestTimeoutSeconds": 1,
            "clearTools": true
          },
          "metadata": {},
          "firstSeenAt": "2026-09-16T12:00:00Z",
          "lastSeenAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z",
          "createdAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_enduser_v1_GetEndUserResponse"
    },
    {
      "id": "cookbook-core-platform-identity-access-end-users-json-01-response",
      "operationId": "getEndUser",
      "operationKey": "end-users:getEndUser",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for 1. Load the saved settings and account defaults. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "endUser": {
          "subject": "user_123",
          "tenantId": "tenant_abc",
          "email": "jane@example.com",
          "emailVerified": true,
          "name": "Jane Doe",
          "givenName": "Jane",
          "picture": "https://…",
          "signInProvider": "google.com",
          "locale": "en-US",
          "zoneinfo": "Europe/London",
          "location": {
            "latitude": 51.5072,
            "longitude": -0.1276,
            "timezone": "Europe/London",
            "updatedAt": "2026-08-14T09:31:02Z"
          },
          "localeOverride": "es-MX",
          "defaultGenerationConfig": {
            "model": "google/gemini-3.6-flash",
            "temperature": 0.4,
            "languagePreference": "es"
          },
          "metadata": {
            "preferredView": "compact"
          },
          "firstSeenAt": "2026-01-14T09:12:00Z",
          "lastSeenAt": "2026-08-14T09:30:58Z",
          "updatedAt": "2026-08-14T09:31:02Z",
          "createdAt": "2026-01-14T09:12:00Z"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_enduser_v1_GetEndUserResponse"
    },
    {
      "id": "secrets-putSecret-request",
      "operationId": "putSecret",
      "operationKey": "secrets:putSecret",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Store an example-named provider credential; replace the placeholder with the value to store.",
      "payload": {
        "name": "travel-provider-api-key",
        "value": "replace-with-provider-api-key",
        "description": "API key for the travel provider"
      },
      "schemaName": "platform_v1_services_secretmanager_v1_PutSecretRequest"
    },
    {
      "id": "secrets-putSecret-response",
      "operationId": "putSecret",
      "operationKey": "secrets:putSecret",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "metadata": {
          "name": "example",
          "projectId": "example_123",
          "description": "example",
          "labels": {},
          "version": "1",
          "createdBy": "example",
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_secretmanager_v1_PutSecretResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-custom-mcp-servers-01-request",
      "operationId": "putSecret",
      "operationKey": "secrets:putSecret",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 1. Store the Firecrawl credential. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "firecrawl-api-key",
        "value": "fc-your-token-here",
        "description": "Firecrawl bearer token",
        "labels": {
          "kind": "mcp-auth"
        }
      },
      "schemaName": "platform_v1_services_secretmanager_v1_PutSecretRequest"
    },
    {
      "id": "cookbook-integrations-tools-connections-custom-mcp-servers-06-request",
      "operationId": "putSecret",
      "operationKey": "secrets:putSecret",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Rotate the credential. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "name": "firecrawl-api-key",
        "value": "fc-the-new-token"
      },
      "schemaName": "platform_v1_services_secretmanager_v1_PutSecretRequest"
    },
    {
      "id": "secrets-getSecretMetadata-request",
      "operationId": "getSecretMetadata",
      "operationKey": "secrets:getSecretMetadata",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use the name of an existing secret in the authenticated project.",
      "payload": {
        "name": "travel-provider-api-key"
      },
      "schemaName": "platform_v1_services_secretmanager_v1_GetSecretMetadataRequest"
    },
    {
      "id": "secrets-getSecretMetadata-response",
      "operationId": "getSecretMetadata",
      "operationKey": "secrets:getSecretMetadata",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "metadata": {
          "name": "example",
          "projectId": "example_123",
          "description": "example",
          "labels": {},
          "version": "1",
          "createdBy": "example",
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "platform_v1_services_secretmanager_v1_GetSecretMetadataResponse"
    },
    {
      "id": "secrets-listSecrets-request",
      "operationId": "listSecrets",
      "operationKey": "secrets:listSecrets",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List the first page of secret metadata for the authenticated project.",
      "payload": {
        "page": 0,
        "pageSize": 20
      },
      "schemaName": "platform_v1_services_secretmanager_v1_ListSecretsRequest"
    },
    {
      "id": "secrets-listSecrets-response",
      "operationId": "listSecrets",
      "operationKey": "secrets:listSecrets",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "secrets": [
          {
            "name": "example",
            "projectId": "example_123",
            "description": "example",
            "labels": {},
            "version": "1",
            "createdBy": "example",
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z"
          }
        ],
        "total": 1
      },
      "status": "200",
      "schemaName": "platform_v1_services_secretmanager_v1_ListSecretsResponse"
    },
    {
      "id": "secrets-deleteSecret-request",
      "operationId": "deleteSecret",
      "operationKey": "secrets:deleteSecret",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Use the name of an existing secret in the authenticated project.",
      "payload": {
        "name": "travel-provider-api-key"
      },
      "schemaName": "platform_v1_services_secretmanager_v1_DeleteSecretRequest"
    },
    {
      "id": "secrets-deleteSecret-response",
      "operationId": "deleteSecret",
      "operationKey": "secrets:deleteSecret",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deleted": true
      },
      "status": "200",
      "schemaName": "platform_v1_services_secretmanager_v1_DeleteSecretResponse"
    },
    {
      "id": "storage-createFolder-request",
      "operationId": "createFolder",
      "operationKey": "storage:createFolder",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create a reports folder in the authenticated user’s storage namespace.",
      "payload": {
        "folderPath": "reports"
      },
      "schemaName": "storage_v1_services_gateway_v1_CreateFolderRequest"
    },
    {
      "id": "storage-createFolder-response",
      "operationId": "createFolder",
      "operationKey": "storage:createFolder",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "folder": {
          "folderId": "example_123",
          "name": "example",
          "path": "documents/example.txt",
          "parentPath": "documents/example.txt",
          "createdAt": "example",
          "modifiedAt": "example",
          "metadata": {},
          "fileCount": 1,
          "subfolderCount": 1,
          "totalSizeBytes": "1"
        },
        "created": true
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_CreateFolderResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-folders-01-request",
      "operationId": "createFolder",
      "operationKey": "storage:createFolder",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Prepare a folder and add the first document. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "folderPath": "/documents/work"
      },
      "schemaName": "storage_v1_services_gateway_v1_CreateFolderRequest"
    },
    {
      "id": "storage-deleteFolder-request",
      "operationId": "deleteFolder",
      "operationKey": "storage:deleteFolder",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Delete the selected empty folder; recursive deletion is not requested.",
      "payload": {
        "folderPath": "reports",
        "recursive": false
      },
      "schemaName": "storage_v1_services_gateway_v1_DeleteFolderRequest"
    },
    {
      "id": "storage-deleteFolder-response",
      "operationId": "deleteFolder",
      "operationKey": "storage:deleteFolder",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deleted": true,
        "filesDeleted": 1,
        "foldersDeleted": 1
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_DeleteFolderResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-folders-02-request",
      "operationId": "deleteFolder",
      "operationKey": "storage:deleteFolder",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Remove the project’s documents when the customer chooses. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "folderPath": "/documents/work",
        "recursive": true
      },
      "schemaName": "storage_v1_services_gateway_v1_DeleteFolderRequest"
    },
    {
      "id": "storage-listFiles-request",
      "operationId": "listFiles",
      "operationKey": "storage:listFiles",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List a bounded page of files from the reports folder.",
      "payload": {
        "folderPath": "reports",
        "pageSize": 20
      },
      "schemaName": "storage_v1_services_gateway_v1_ListFilesRequest"
    },
    {
      "id": "storage-listFiles-response",
      "operationId": "listFiles",
      "operationKey": "storage:listFiles",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "files": [
          {
            "fileId": "example_123",
            "name": "example",
            "path": "documents/example.txt",
            "folderPath": "documents/example.txt",
            "sizeBytes": "1",
            "contentType": "Example text",
            "uploadedAt": "example",
            "modifiedAt": "example",
            "metadata": {},
            "tags": [
              "example"
            ],
            "description": "example",
            "storageRef": {
              "bucket": "example",
              "key": "example_123",
              "provider": "STORAGE_PROVIDER_GCS"
            },
            "checksum": "example",
            "version": 1
          }
        ],
        "folders": [
          {
            "folderId": "example_123",
            "name": "example",
            "path": "documents/example.txt",
            "parentPath": "documents/example.txt",
            "createdAt": "example",
            "modifiedAt": "example",
            "metadata": {},
            "fileCount": 1,
            "subfolderCount": 1,
            "totalSizeBytes": "1"
          }
        ],
        "nextPageToken": "example",
        "totalCount": 1
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_ListFilesResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-managing-01-request",
      "operationId": "listFiles",
      "operationKey": "storage:listFiles",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Populate the folder view. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "folderPath": "/documents",
        "recursive": true,
        "pageSize": 20
      },
      "schemaName": "storage_v1_services_gateway_v1_ListFilesRequest"
    },
    {
      "id": "cookbook-core-platform-files-data-managing-json-01-request",
      "operationId": "listFiles",
      "operationKey": "storage:listFiles",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Populate the folder view. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "folderPath": "/",
        "recursive": true,
        "filter": {
          "extensions": [
            ".pdf",
            ".docx"
          ],
          "tags": [
            "work"
          ],
          "minSizeBytes": 1024,
          "nameContains": "report"
        }
      },
      "schemaName": "storage_v1_services_gateway_v1_ListFilesRequest"
    },
    {
      "id": "storage-uploadFile-request",
      "operationId": "uploadFile",
      "operationKey": "storage:uploadFile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Upload the base64 encoding of Hello followed by a newline.",
      "payload": {
        "folderPath": "reports",
        "fileName": "welcome.txt",
        "content": "SGVsbG8K",
        "contentType": "text/plain"
      },
      "schemaName": "storage_v1_services_gateway_v1_UploadFileRequest"
    },
    {
      "id": "storage-uploadFile-response",
      "operationId": "uploadFile",
      "operationKey": "storage:uploadFile",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "file": {
          "fileId": "example_123",
          "name": "example",
          "path": "documents/example.txt",
          "folderPath": "documents/example.txt",
          "sizeBytes": "1",
          "contentType": "Example text",
          "uploadedAt": "example",
          "modifiedAt": "example",
          "metadata": {},
          "tags": [
            "example"
          ],
          "description": "example",
          "storageRef": {
            "bucket": "example",
            "key": "example_123",
            "provider": "STORAGE_PROVIDER_GCS"
          },
          "checksum": "example",
          "version": 1
        },
        "uploaded": true
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_UploadFileResponse"
    },
    {
      "id": "storage-deleteFile-request",
      "operationId": "deleteFile",
      "operationKey": "storage:deleteFile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace fileId with an existing file returned by upload or listing.",
      "payload": {
        "fileId": "0123456789abcdef0123456789abcdef"
      },
      "schemaName": "storage_v1_services_gateway_v1_DeleteFileRequest"
    },
    {
      "id": "storage-deleteFile-response",
      "operationId": "deleteFile",
      "operationKey": "storage:deleteFile",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "deleted": true,
        "spaceFreedBytes": "1"
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_DeleteFileResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-managing-06-request",
      "operationId": "deleteFile",
      "operationKey": "storage:deleteFile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Delete a document the customer no longer needs. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fileId": "a1b2c3d4e5f60718293a4b5c6d7e8f90"
      },
      "schemaName": "storage_v1_services_gateway_v1_DeleteFileRequest"
    },
    {
      "id": "storage-moveFile-request",
      "operationId": "moveFile",
      "operationKey": "storage:moveFile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Move an existing file to the archive folder and rename it.",
      "payload": {
        "fileId": "0123456789abcdef0123456789abcdef",
        "destinationFolder": "archive",
        "newName": "welcome-archived.txt"
      },
      "schemaName": "storage_v1_services_gateway_v1_MoveFileRequest"
    },
    {
      "id": "storage-moveFile-response",
      "operationId": "moveFile",
      "operationKey": "storage:moveFile",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "file": {
          "fileId": "example_123",
          "name": "example",
          "path": "documents/example.txt",
          "folderPath": "documents/example.txt",
          "sizeBytes": "1",
          "contentType": "Example text",
          "uploadedAt": "example",
          "modifiedAt": "example",
          "metadata": {},
          "tags": [
            "example"
          ],
          "description": "example",
          "storageRef": {
            "bucket": "example",
            "key": "example_123",
            "provider": "STORAGE_PROVIDER_GCS"
          },
          "checksum": "example",
          "version": 1
        },
        "moved": true
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_MoveFileResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-managing-05-request",
      "operationId": "moveFile",
      "operationKey": "storage:moveFile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Archive a completed document. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fileId": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
        "destinationFolder": "/archive",
        "newName": "notes-2025-q1.txt"
      },
      "schemaName": "storage_v1_services_gateway_v1_MoveFileRequest"
    },
    {
      "id": "storage-getFileMetadata-request",
      "operationId": "getFileMetadata",
      "operationKey": "storage:getFileMetadata",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read metadata for an existing file returned by upload or listing.",
      "payload": {
        "fileId": "0123456789abcdef0123456789abcdef"
      },
      "schemaName": "storage_v1_services_gateway_v1_GetFileMetadataRequest"
    },
    {
      "id": "storage-getFileMetadata-response",
      "operationId": "getFileMetadata",
      "operationKey": "storage:getFileMetadata",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "file": {
          "fileId": "example_123",
          "name": "example",
          "path": "documents/example.txt",
          "folderPath": "documents/example.txt",
          "sizeBytes": "1",
          "contentType": "Example text",
          "uploadedAt": "example",
          "modifiedAt": "example",
          "metadata": {},
          "tags": [
            "example"
          ],
          "description": "example",
          "storageRef": {
            "bucket": "example",
            "key": "example_123",
            "provider": "STORAGE_PROVIDER_GCS"
          },
          "checksum": "example",
          "version": 1
        }
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_GetFileMetadataResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-managing-03-request",
      "operationId": "getFileMetadata",
      "operationKey": "storage:getFileMetadata",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Open the selected document’s details. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fileId": "a1b2c3d4e5f60718293a4b5c6d7e8f90"
      },
      "schemaName": "storage_v1_services_gateway_v1_GetFileMetadataRequest"
    },
    {
      "id": "storage-updateFileMetadata-request",
      "operationId": "updateFileMetadata",
      "operationKey": "storage:updateFileMetadata",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Set descriptive metadata on an existing file.",
      "payload": {
        "fileId": "0123456789abcdef0123456789abcdef",
        "description": "Welcome message",
        "tags": [
          "onboarding"
        ],
        "metadata": {
          "category": "help"
        }
      },
      "schemaName": "storage_v1_services_gateway_v1_UpdateFileMetadataRequest"
    },
    {
      "id": "storage-updateFileMetadata-response",
      "operationId": "updateFileMetadata",
      "operationKey": "storage:updateFileMetadata",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "file": {
          "fileId": "example_123",
          "name": "example",
          "path": "documents/example.txt",
          "folderPath": "documents/example.txt",
          "sizeBytes": "1",
          "contentType": "Example text",
          "uploadedAt": "example",
          "modifiedAt": "example",
          "metadata": {},
          "tags": [
            "example"
          ],
          "description": "example",
          "storageRef": {
            "bucket": "example",
            "key": "example_123",
            "provider": "STORAGE_PROVIDER_GCS"
          },
          "checksum": "example",
          "version": 1
        },
        "updated": true
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_UpdateFileMetadataResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-managing-04-request",
      "operationId": "updateFileMetadata",
      "operationKey": "storage:updateFileMetadata",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Save the review labels without erasing other labels. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fileId": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
        "metadata": {
          "reviewed": "true",
          "category": "internal"
        },
        "tags": [
          "notes",
          "reviewed"
        ],
        "description": "Meeting notes from Q1 planning"
      },
      "schemaName": "storage_v1_services_gateway_v1_UpdateFileMetadataRequest"
    },
    {
      "id": "storage-getStorageQuota-request",
      "operationId": "getStorageQuota",
      "operationKey": "storage:getStorageQuota",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read quota and usage for the authenticated user’s storage namespace.",
      "payload": {},
      "schemaName": "storage_v1_services_gateway_v1_GetStorageQuotaRequest"
    },
    {
      "id": "storage-getStorageQuota-response",
      "operationId": "getStorageQuota",
      "operationKey": "storage:getStorageQuota",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "usedBytes": "1",
        "quotaBytes": "1",
        "fileCount": 1,
        "folderCount": 1,
        "usagePercentage": 1
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_GetStorageQuotaResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-managing-json-02-response",
      "operationId": "getStorageQuota",
      "operationKey": "storage:getStorageQuota",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Make room for another attachment. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "usedBytes": "1048576",
        "quotaBytes": "1073741824",
        "fileCount": 15,
        "folderCount": 4,
        "usagePercentage": 0.098
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_GetStorageQuotaResponse"
    },
    {
      "id": "storage-searchFiles-request",
      "operationId": "searchFiles",
      "operationKey": "storage:searchFiles",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Find matching files within the authenticated user’s storage namespace.",
      "payload": {
        "query": "welcome",
        "maxResults": 20
      },
      "schemaName": "storage_v1_services_gateway_v1_SearchFilesRequest"
    },
    {
      "id": "storage-searchFiles-response",
      "operationId": "searchFiles",
      "operationKey": "storage:searchFiles",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "files": [
          {
            "fileId": "example_123",
            "name": "example",
            "path": "documents/example.txt",
            "folderPath": "documents/example.txt",
            "sizeBytes": "1",
            "contentType": "Example text",
            "uploadedAt": "example",
            "modifiedAt": "example",
            "metadata": {},
            "tags": [
              "example"
            ],
            "description": "example",
            "storageRef": {
              "bucket": "example",
              "key": "example_123",
              "provider": "STORAGE_PROVIDER_GCS"
            },
            "checksum": "example",
            "version": 1
          }
        ],
        "totalMatches": 1
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_SearchFilesResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-managing-02-request",
      "operationId": "searchFiles",
      "operationKey": "storage:searchFiles",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Find a report when its folder is unknown. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "query": "quarterly report",
        "maxResults": 10,
        "filter": {
          "extensions": [
            ".pdf"
          ],
          "tags": [
            "finance"
          ],
          "minSizeBytes": 1024,
          "maxSizeBytes": 52428800,
          "nameContains": "Q1"
        }
      },
      "schemaName": "storage_v1_services_gateway_v1_SearchFilesRequest"
    },
    {
      "id": "storage-generateUploadUrl-request",
      "operationId": "generateUploadUrl",
      "operationKey": "storage:generateUploadUrl",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Request a signed upload for the six bytes Hello plus newline; send the returned required headers during upload.",
      "payload": {
        "folderPath": "reports",
        "fileName": "welcome.txt",
        "contentType": "text/plain",
        "sizeBytes": "6",
        "expiresSeconds": 900
      },
      "schemaName": "storage_v1_services_gateway_v1_GenerateUploadUrlRequest"
    },
    {
      "id": "storage-generateUploadUrl-response",
      "operationId": "generateUploadUrl",
      "operationKey": "storage:generateUploadUrl",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "url": "https://example.com/resource",
        "fileId": "example_123",
        "fullPath": "documents/example.txt",
        "requiredHeaders": {}
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_GenerateUploadUrlResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-files-01-request",
      "operationId": "generateUploadUrl",
      "operationKey": "storage:generateUploadUrl",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Upload and confirm the recording. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "folderPath": "/media",
        "fileName": "video.mp4",
        "contentType": "video/mp4",
        "sizeBytes": 52428800,
        "expiresSeconds": 3600
      },
      "schemaName": "storage_v1_services_gateway_v1_GenerateUploadUrlRequest"
    },
    {
      "id": "cookbook-core-platform-files-data-files-json-01-response",
      "operationId": "generateUploadUrl",
      "operationKey": "storage:generateUploadUrl",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Upload and confirm the recording. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "url": "https://storage.googleapis.com/bucket/...",
        "fileId": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
        "fullPath": "/media/video.mp4",
        "requiredHeaders": {
          "content-type": "video/mp4",
          "x-goog-content-length-range": "0,52428800"
        }
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_GenerateUploadUrlResponse"
    },
    {
      "id": "storage-registerUploadedFile-request",
      "operationId": "registerUploadedFile",
      "operationKey": "storage:registerUploadedFile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "After uploading, use the fileId returned by generate-upload-url and the same folderPath and fileName.",
      "payload": {
        "fileId": "0123456789abcdef0123456789abcdef",
        "folderPath": "reports",
        "fileName": "welcome.txt"
      },
      "schemaName": "storage_v1_services_gateway_v1_RegisterUploadedFileRequest"
    },
    {
      "id": "storage-registerUploadedFile-response",
      "operationId": "registerUploadedFile",
      "operationKey": "storage:registerUploadedFile",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "file": {
          "fileId": "example_123",
          "name": "example",
          "path": "documents/example.txt",
          "folderPath": "documents/example.txt",
          "sizeBytes": "1",
          "contentType": "Example text",
          "uploadedAt": "example",
          "modifiedAt": "example",
          "metadata": {},
          "tags": [
            "example"
          ],
          "description": "example",
          "storageRef": {
            "bucket": "example",
            "key": "example_123",
            "provider": "STORAGE_PROVIDER_GCS"
          },
          "checksum": "example",
          "version": 1
        },
        "registered": true
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_RegisterUploadedFileResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-files-03-request",
      "operationId": "registerUploadedFile",
      "operationKey": "storage:registerUploadedFile",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Upload and confirm the recording. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fileId": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
        "folderPath": "/media",
        "fileName": "video.mp4"
      },
      "schemaName": "storage_v1_services_gateway_v1_RegisterUploadedFileRequest"
    },
    {
      "id": "storage-generateDownloadUrl-request",
      "operationId": "generateDownloadUrl",
      "operationKey": "storage:generateDownloadUrl",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Request a short-lived download URL for an existing file.",
      "payload": {
        "fileId": "0123456789abcdef0123456789abcdef",
        "expiresSeconds": 900
      },
      "schemaName": "storage_v1_services_gateway_v1_GenerateDownloadUrlRequest"
    },
    {
      "id": "storage-generateDownloadUrl-response",
      "operationId": "generateDownloadUrl",
      "operationKey": "storage:generateDownloadUrl",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "url": "https://example.com/resource",
        "file": {
          "fileId": "example_123",
          "name": "example",
          "path": "documents/example.txt",
          "folderPath": "documents/example.txt",
          "sizeBytes": "1",
          "contentType": "Example text",
          "uploadedAt": "example",
          "modifiedAt": "example",
          "metadata": {},
          "tags": [
            "example"
          ],
          "description": "example",
          "storageRef": {
            "bucket": "example",
            "key": "example_123",
            "provider": "STORAGE_PROVIDER_GCS"
          },
          "checksum": "example",
          "version": 1
        }
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_GenerateDownloadUrlResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-files-04-request",
      "operationId": "generateDownloadUrl",
      "operationKey": "storage:generateDownloadUrl",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Let the customer reopen the attachment. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fileId": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
        "expiresSeconds": 3600
      },
      "schemaName": "storage_v1_services_gateway_v1_GenerateDownloadUrlRequest"
    },
    {
      "id": "cookbook-core-platform-files-data-files-json-02-response",
      "operationId": "generateDownloadUrl",
      "operationKey": "storage:generateDownloadUrl",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Let the customer reopen the attachment. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "url": "https://storage.googleapis.com/bucket/...",
        "file": {
          "name": "video.mp4",
          "path": "/media/video.mp4",
          "sizeBytes": "52428800",
          "contentType": "video/mp4"
        }
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_GenerateDownloadUrlResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-files-json-03-request",
      "operationId": "generateDownloadUrl",
      "operationKey": "storage:generateDownloadUrl",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Let the customer reopen the attachment. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fileId": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
        "responseContentDisposition": "attachment; filename=my-video.mp4"
      },
      "schemaName": "storage_v1_services_gateway_v1_GenerateDownloadUrlRequest"
    },
    {
      "id": "storage-batchGenerateDownloadUrls-request",
      "operationId": "batchGenerateDownloadUrls",
      "operationKey": "storage:batchGenerateDownloadUrls",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Resolve existing file IDs together; inspect each result separately.",
      "payload": {
        "fileIds": [
          "0123456789abcdef0123456789abcdef"
        ],
        "expiresSeconds": 900
      },
      "schemaName": "storage_v1_services_gateway_v1_BatchGenerateDownloadUrlsRequest"
    },
    {
      "id": "storage-batchGenerateDownloadUrls-response",
      "operationId": "batchGenerateDownloadUrls",
      "operationKey": "storage:batchGenerateDownloadUrls",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "results": [
          {
            "fileId": "example_123",
            "url": "https://example.com/resource",
            "success": true,
            "error": "example",
            "contentType": "Example text"
          }
        ]
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_BatchGenerateDownloadUrlsResponse"
    },
    {
      "id": "cookbook-core-platform-files-data-files-05-request",
      "operationId": "batchGenerateDownloadUrls",
      "operationKey": "storage:batchGenerateDownloadUrls",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Show several attachments on the case. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "fileIds": [
          "a1b2c3d4e5f60718293a4b5c6d7e8f90",
          "b2c3d4e5f60718293a4b5c6d7e8f901a"
        ],
        "expiresSeconds": 3600
      },
      "schemaName": "storage_v1_services_gateway_v1_BatchGenerateDownloadUrlsRequest"
    },
    {
      "id": "cookbook-core-platform-files-data-files-json-04-response",
      "operationId": "batchGenerateDownloadUrls",
      "operationKey": "storage:batchGenerateDownloadUrls",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Show several attachments on the case. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "results": [
          {
            "fileId": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
            "url": "https://storage.googleapis.com/bucket/...",
            "success": true,
            "contentType": "video/mp4"
          },
          {
            "fileId": "b2c3d4e5f60718293a4b5c6d7e8f901a",
            "error": "file not found"
          }
        ]
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_BatchGenerateDownloadUrlsResponse"
    },
    {
      "id": "storage-getState-request",
      "operationId": "getState",
      "operationKey": "storage:getState",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Read the authenticated user’s storage state; no file or folder selector is needed.",
      "payload": {},
      "schemaName": "storage_v1_services_gateway_v1_GetStateRequest"
    },
    {
      "id": "storage-getState-response",
      "operationId": "getState",
      "operationKey": "storage:getState",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "state": {
          "userId": "example_123",
          "folders": {},
          "files": {},
          "totalSizeBytes": "1",
          "quotaBytes": "1",
          "totalFileCount": 1,
          "totalFolderCount": 1,
          "createdAt": "example",
          "lastModified": "example"
        }
      },
      "status": "200",
      "schemaName": "storage_v1_services_gateway_v1_GetStateResponse"
    },
    {
      "id": "conversations-createThread-request",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Create a titled conversation; identity comes from authenticated context.",
      "payload": {
        "title": "Travel planning",
        "tags": [
          "travel"
        ]
      },
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadRequest"
    },
    {
      "id": "conversations-createThread-response",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "thread": {
          "threadId": "example_123",
          "title": "example",
          "tags": [
            "example"
          ],
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z",
          "externalId": "example_123"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-connected-apps-04-request",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 2. Give this conversation access to the calendar. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationSettings": {
          "mcpServers": [
            {
              "serverId": "pipedream:google_calendar",
              "enabled": true
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-02-request",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 2: Start one support conversation. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "title": "My First Thread"
      },
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-index-01-request",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 1: Create the support thread once. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "title": "Support Chat"
      },
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadRequest"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-build-agent-with-tools-01-request",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 1: Describe the navigation your app can perform. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "defaultGenerationConfig": {
          "clientTools": [
            {
              "name": "navigate_to",
              "serverId": "client",
              "description": "Navigate the app to a given screen",
              "parametersJsonSchema": {
                "type": "object",
                "properties": {
                  "screen": {
                    "type": "string",
                    "description": "Screen identifier, e.g. \"/settings\""
                  }
                },
                "required": [
                  "screen"
                ]
              }
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadRequest"
    },
    {
      "id": "cookbook-managed-agents-model-controls-examples-01-request",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recipe: keep a research conversation on large-context candidates. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "title": "Long research thread",
        "defaultGenerationConfig": {
          "models": [
            "google/gemini-3.6-flash:nitro",
            "anthropic/claude-sonnet-4.6:nitro",
            "anthropic/claude-sonnet-5"
          ],
          "modelRoutingFilter": {
            "minContextLength": 128000
          }
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadRequest"
    },
    {
      "id": "cookbook-managed-agents-model-controls-filtering-02-request",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: keep a capability requirement for a long research thread. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "title": "Long research thread",
        "defaultGenerationConfig": {
          "models": [
            "google/gemini-3.6-flash:nitro",
            "anthropic/claude-sonnet-4.6:nitro",
            "anthropic/claude-sonnet-5"
          ],
          "modelRoutingFilter": {
            "minContextLength": "128000"
          }
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-json-02-response",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 2: Start one support conversation. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "thread": {
          "threadId": "b81d5345-c1f9-4fb9-b558-a6327c75b842",
          "title": "My First Thread",
          "createdAt": "2026-04-23T16:34:02.673Z",
          "updatedAt": "2026-04-23T16:34:02.673Z"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-configuration-json-01-request",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: reuse the same assistant setup across conversations. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "title": "Nutrition check-in",
        "activeProfileId": "nutrition_coach"
      },
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadRequest"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-build-agent-with-tools-json-01-response",
      "operationId": "createThread",
      "operationKey": "conversations:createThread",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 1: Describe the navigation your app can perform. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "thread": {
          "threadId": "b81d5345-c1f9-4fb9-b558-a6327c75b842"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_CreateThreadResponse"
    },
    {
      "id": "conversations-listThreads-request",
      "operationId": "listThreads",
      "operationKey": "conversations:listThreads",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List the authenticated user’s conversations with default paging.",
      "payload": {},
      "schemaName": "llm_v1_services_gateway_v1_ListThreadsRequest"
    },
    {
      "id": "conversations-listThreads-response",
      "operationId": "listThreads",
      "operationKey": "conversations:listThreads",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "threads": [
          {
            "threadId": "example_123",
            "userId": "example_123",
            "title": "example",
            "tags": [
              "example"
            ],
            "status": "CONVERSATION_STATUS_ACTIVE",
            "messageCount": "1",
            "lastMessagePreview": "example",
            "lastMessageAt": "2026-09-16T12:00:00Z",
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z",
            "externalId": "example_123"
          }
        ],
        "nextPageToken": "example"
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_ListThreadsResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-json-01-response",
      "operationId": "listThreads",
      "operationKey": "conversations:listThreads",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Verify credentials with your first call. Replace example resource identifiers with your own authorized values.",
      "payload": {},
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_ListThreadsResponse"
    },
    {
      "id": "conversations-sendMessage-request",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "conversationKey": "example_123",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Hello"
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest"
    },
    {
      "id": "conversations-sendMessage-response",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "runId": "example_123",
        "interruptedPriorRun": true
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SendMessageResponse"
    },
    {
      "id": "cookbook-core-platform-identity-access-scopes-permissions-01-request",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for The `users:impersonate` scope and `X-On-Behalf-Of`. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "conv_abc",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Hello"
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest"
    },
    {
      "id": "cookbook-integrations-tools-connections-custom-mcp-servers-05-request",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 4. Ask about the page in a conversation. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Read https://www.firecrawl.dev/pricing and summarize the pricing options. Link to the source."
            }
          ]
        },
        "overrideMcpServers": [
          {
            "serverId": "custom:firecrawl",
            "enabled": true
          }
        ]
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-03-request",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Send the message. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "b81d5345-c1f9-4fb9-b558-a6327c75b842",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "What can you help me with?"
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-generation-01-request",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 1: Send once and read the same conversation. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "b81d5345-c1f9-4fb9-b558-a6327c75b842",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Hello, what can you help me with?"
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-index-02-request",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 2: Send the customer’s first question. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "How do I reset my password?"
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest"
    },
    {
      "id": "cookbook-managed-agents-model-controls-examples-02-request",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recipe: summarize support notes with a catalog price filter. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "bulk-task-001",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Summarize this support note: The customer reset their password and can now sign in."
            }
          ]
        },
        "overrideGenerationConfig": {
          "models": [
            "google/gemini-3.6-flash:nitro",
            "google/gemini-3.1-flash-lite",
            "google/gemini-3-flash-preview"
          ],
          "modelRoutingFilter": {
            "maxPromptCost": 0.000005,
            "maxCompletionCost": 0.00002
          }
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest"
    },
    {
      "id": "cookbook-managed-agents-model-controls-examples-03-request",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recipe: return a task summary after tool-assisted work. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "<your-thread-id>",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Summarize the task we just discussed."
            }
          ]
        },
        "overrideGenerationConfig": {
          "models": [
            "google/gemini-3.6-flash:nitro",
            "anthropic/claude-sonnet-4.6:nitro"
          ],
          "responseFormat": {
            "jsonSchema": {
              "type": "object",
              "properties": {
                "summary": {
                  "type": "string"
                }
              },
              "required": [
                "summary"
              ],
              "additionalProperties": false
            },
            "schemaName": "task_summary",
            "validate": true
          },
          "modelRoutingFilter": {
            "requiredParameters": [
              "tools",
              "response_format"
            ]
          }
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest"
    },
    {
      "id": "cookbook-managed-agents-model-controls-filtering-01-request",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 1: send the image with its required capability. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "research-001",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_IMAGE_BASE64",
              "content": "<base64_image>"
            },
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "What is in this image?"
            }
          ]
        },
        "overrideGenerationConfig": {
          "models": [
            "google/gemini-3.6-flash:nitro",
            "anthropic/claude-sonnet-4.6:nitro",
            "anthropic/claude-sonnet-5"
          ],
          "modelRoutingFilter": {
            "requiredInputModalities": [
              "image"
            ]
          }
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-json-03-response",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Send the message. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "runId": "64403669-5989-4ec3-ad9c-d84223f9679f"
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SendMessageResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-configuration-json-02-request",
      "operationId": "sendMessage",
      "operationKey": "conversations:sendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: reuse the same assistant setup across conversations. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "thread_abc",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "..."
            }
          ]
        },
        "setActiveProfileId": "profile_escalation"
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageRequest"
    },
    {
      "id": "conversations-appendMessage-request",
      "operationId": "appendMessage",
      "operationKey": "conversations:appendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "conversationKey": "example_123",
        "message": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Hello"
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_AppendMessageRequest"
    },
    {
      "id": "conversations-appendMessage-response",
      "operationId": "appendMessage",
      "operationKey": "conversations:appendMessage",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_AppendMessageResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-generation-04-request",
      "operationId": "appendMessage",
      "operationKey": "conversations:appendMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Separate recipe: record an onboarding event without another reply. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "b81d5345-c1f9-4fb9-b558-a6327c75b842",
        "message": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "CONTEXT UPDATE: user completed onboarding."
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_AppendMessageRequest"
    },
    {
      "id": "conversations-rateMessage-request",
      "operationId": "rateMessage",
      "operationKey": "conversations:rateMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Give an existing assistant message a positive thumb rating; replace its sequence number.",
      "payload": {
        "conversationKey": "example_123",
        "messageSequence": "1",
        "kind": "FEEDBACK_KIND_THUMB",
        "thumbUp": true
      },
      "schemaName": "llm_v1_services_gateway_v1_RateMessageRequest"
    },
    {
      "id": "conversations-rateMessage-response",
      "operationId": "rateMessage",
      "operationKey": "conversations:rateMessage",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "ratedMessage": {
          "role": "ROLE_SYSTEM",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Example text",
              "cachePreferred": true
            }
          ],
          "toolCalls": [
            {
              "id": "example_123",
              "name": "example",
              "status": "TOOL_EXECUTION_STATUS_PENDING",
              "serverId": "example_123",
              "isClientTool": true,
              "description": "example",
              "approvedBy": "example",
              "endReason": "example"
            }
          ],
          "name": "example",
          "timestamp": "2026-09-16T12:00:00Z",
          "messageId": "example_123",
          "annotations": [
            {
              "kind": "ANNOTATION_KIND_URL_CITATION"
            }
          ],
          "sequence": "1",
          "generatedBy": "example",
          "usage": {
            "promptTokens": 1,
            "completionTokens": 1,
            "totalTokens": 1,
            "costEstimate": 1,
            "isByok": true
          },
          "model": "example",
          "generationContext": {
            "languagePreference": "en-US",
            "resolvedSystemPrompt": "Example text",
            "profileId": "example_123",
            "model": "example",
            "promptSource": "PROMPT_SOURCE_CLIENT_OVERRIDE",
            "profileVersion": 1,
            "fragmentsVersion": 1,
            "profileRenderFailed": true,
            "resolvedPromptHash": "Example text",
            "resolvedUserContext": "Example text"
          },
          "clientContext": {},
          "feedback": [
            {
              "kind": "FEEDBACK_KIND_THUMB",
              "thumbUp": true,
              "reason": "example",
              "ratedBy": "example"
            }
          ],
          "sourceUserMessageId": "example_123",
          "finishReason": "example"
        },
        "isUpdate": true
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_RateMessageResponse"
    },
    {
      "id": "cookbook-insights-evaluation-message-feedback-01-request",
      "operationId": "rateMessage",
      "operationKey": "conversations:rateMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Save the user’s judgment beside the reply. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "messageSequence": 8,
        "kind": "FEEDBACK_KIND_THUMB",
        "thumbUp": true
      },
      "schemaName": "llm_v1_services_gateway_v1_RateMessageRequest"
    },
    {
      "id": "cookbook-insights-evaluation-message-feedback-json-01-response",
      "operationId": "rateMessage",
      "operationKey": "conversations:rateMessage",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Save the user’s judgment beside the reply. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "ratedMessage": {
          "role": "ROLE_ASSISTANT",
          "sequence": "8",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "…"
            }
          ],
          "feedback": [
            {
              "kind": "FEEDBACK_KIND_THUMB",
              "thumbUp": true,
              "ratedAt": "2026-08-14T11:02:44Z",
              "ratedBy": "user_123"
            }
          ]
        },
        "isUpdate": true
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_RateMessageResponse"
    },
    {
      "id": "cookbook-insights-evaluation-message-feedback-json-02-request",
      "operationId": "rateMessage",
      "operationKey": "conversations:rateMessage",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: use a 1–10 scale instead of thumbs. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "messageSequence": 8,
        "kind": "FEEDBACK_KIND_SCALE",
        "rating": 9,
        "reason": "Answered the question and cited the policy."
      },
      "schemaName": "llm_v1_services_gateway_v1_RateMessageRequest"
    },
    {
      "id": "conversations-deleteMessageRating-request",
      "operationId": "deleteMessageRating",
      "operationKey": "conversations:deleteMessageRating",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "conversationKey": "example_123",
        "messageSequence": "1"
      },
      "schemaName": "llm_v1_services_gateway_v1_DeleteMessageRatingRequest"
    },
    {
      "id": "conversations-deleteMessageRating-response",
      "operationId": "deleteMessageRating",
      "operationKey": "conversations:deleteMessageRating",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "ratedMessage": {
          "role": "ROLE_SYSTEM",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Example text",
              "cachePreferred": true
            }
          ],
          "toolCalls": [
            {
              "id": "example_123",
              "name": "example",
              "status": "TOOL_EXECUTION_STATUS_PENDING",
              "serverId": "example_123",
              "isClientTool": true,
              "description": "example",
              "approvedBy": "example",
              "endReason": "example"
            }
          ],
          "name": "example",
          "timestamp": "2026-09-16T12:00:00Z",
          "messageId": "example_123",
          "annotations": [
            {
              "kind": "ANNOTATION_KIND_URL_CITATION"
            }
          ],
          "sequence": "1",
          "generatedBy": "example",
          "usage": {
            "promptTokens": 1,
            "completionTokens": 1,
            "totalTokens": 1,
            "costEstimate": 1,
            "isByok": true
          },
          "model": "example",
          "generationContext": {
            "languagePreference": "en-US",
            "resolvedSystemPrompt": "Example text",
            "profileId": "example_123",
            "model": "example",
            "promptSource": "PROMPT_SOURCE_CLIENT_OVERRIDE",
            "profileVersion": 1,
            "fragmentsVersion": 1,
            "profileRenderFailed": true,
            "resolvedPromptHash": "Example text",
            "resolvedUserContext": "Example text"
          },
          "clientContext": {},
          "feedback": [
            {
              "kind": "FEEDBACK_KIND_THUMB",
              "thumbUp": true,
              "reason": "example",
              "ratedBy": "example"
            }
          ],
          "sourceUserMessageId": "example_123",
          "finishReason": "example"
        },
        "removed": true
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_DeleteMessageRatingResponse"
    },
    {
      "id": "cookbook-insights-evaluation-message-feedback-02-request",
      "operationId": "deleteMessageRating",
      "operationKey": "conversations:deleteMessageRating",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Let the user remove their judgment. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "messageSequence": 8
      },
      "schemaName": "llm_v1_services_gateway_v1_DeleteMessageRatingRequest"
    },
    {
      "id": "cookbook-insights-evaluation-message-feedback-json-03-response",
      "operationId": "deleteMessageRating",
      "operationKey": "conversations:deleteMessageRating",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Let the user remove their judgment. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "ratedMessage": {
          "role": "ROLE_ASSISTANT",
          "sequence": "8",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "…"
            }
          ]
        },
        "removed": true
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_DeleteMessageRatingResponse"
    },
    {
      "id": "conversations-sendMessageSync-request",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "conversationKey": "example_123",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Hello"
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncRequest"
    },
    {
      "id": "conversations-sendMessageSync-response",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "runId": "example_123",
        "interruptedPriorRun": true,
        "messages": [
          {
            "role": "ROLE_SYSTEM",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "Example text",
                "cachePreferred": true
              }
            ],
            "toolCalls": [
              {
                "id": "example_123",
                "name": "example",
                "status": "TOOL_EXECUTION_STATUS_PENDING",
                "serverId": "example_123",
                "isClientTool": true,
                "description": "example",
                "approvedBy": "example",
                "endReason": "example"
              }
            ],
            "name": "example",
            "timestamp": "2026-09-16T12:00:00Z",
            "messageId": "example_123",
            "annotations": [
              {
                "kind": "ANNOTATION_KIND_URL_CITATION"
              }
            ],
            "sequence": "1",
            "generatedBy": "example",
            "usage": {
              "promptTokens": 1,
              "completionTokens": 1,
              "totalTokens": 1,
              "costEstimate": 1,
              "isByok": true
            },
            "model": "example",
            "generationContext": {
              "languagePreference": "en-US",
              "resolvedSystemPrompt": "Example text",
              "profileId": "example_123",
              "model": "example",
              "promptSource": "PROMPT_SOURCE_CLIENT_OVERRIDE",
              "profileVersion": 1,
              "fragmentsVersion": 1,
              "profileRenderFailed": true,
              "resolvedPromptHash": "Example text",
              "resolvedUserContext": "Example text"
            },
            "clientContext": {},
            "feedback": [
              {
                "kind": "FEEDBACK_KIND_THUMB",
                "thumbUp": true,
                "reason": "example",
                "ratedBy": "example"
              }
            ],
            "sourceUserMessageId": "example_123",
            "finishReason": "example"
          }
        ],
        "status": "AGENT_STATUS_ACTIVE",
        "aggregateUsage": {
          "promptTokens": 1,
          "completionTokens": 1,
          "totalTokens": 1,
          "costEstimate": 1,
          "completionTokensDetails": {
            "reasoningTokens": 1,
            "imageTokens": 1,
            "audioTokens": 1
          },
          "promptTokensDetails": {
            "cachedTokens": 1,
            "cacheWriteTokens": 1,
            "audioTokens": 1,
            "videoTokens": 1
          },
          "costDetails": {
            "upstreamInferenceCost": 1,
            "upstreamInferencePromptCost": 1,
            "upstreamInferenceCompletionCost": 1
          },
          "isByok": true
        },
        "error": {
          "code": "ERROR_CODE_CANCELLED",
          "message": "example",
          "isTerminal": true,
          "details": {}
        },
        "pendingClientTools": [
          {
            "id": "example_123",
            "name": "example",
            "argumentsJson": {
              "example": "value"
            },
            "status": "TOOL_EXECUTION_STATUS_PENDING",
            "resultJson": {
              "example": "value"
            },
            "executedAt": "2026-09-16T12:00:00Z",
            "serverId": "example_123",
            "isClientTool": true,
            "description": "example",
            "parametersJsonSchema": {
              "example": "value"
            },
            "requiresApprovalAt": "2026-09-16T12:00:00Z",
            "approvedAt": "2026-09-16T12:00:00Z",
            "approvedBy": "example",
            "executionDuration": "1s",
            "endReason": "example",
            "clientToolDeadlineAt": "2026-09-16T12:00:00Z"
          }
        ],
        "clientToolCursor": 1
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncResponse"
    },
    {
      "id": "cookbook-core-platform-scheduling-build-scheduled-agents-01-request",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 3: Drive an agent turn from the callback. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "b81d5345-c1f9-4fb9-b558-a6327c75b842",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Generate the daily briefing."
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncRequest"
    },
    {
      "id": "cookbook-developer-experience-local-tooling-testing-01-request",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "b81d5345-c1f9-4fb9-b558-a6327c75b842",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Navigate to my profile."
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncRequest"
    },
    {
      "id": "cookbook-insights-evaluation-datasets-and-runs-05-request",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 4. Run both configurations and retain their outcomes. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "b81d5345-c1f9-4fb9-b558-a6327c75b842",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "What is the return window?"
            }
          ]
        },
        "experiment": {
          "datasetId": "ds_771",
          "runName": "nightly-2026-08-14",
          "datasetItemId": "di_001",
          "profileRevisionHash": "a1b2c3…"
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-generation-03-request",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Separate recipe: wait for a backend summary in the response. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "b81d5345-c1f9-4fb9-b558-a6327c75b842",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Summarize this thread as JSON."
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncRequest"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-using-tools-03-request",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 1: Receive the complete navigation call. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "userMessage": {
          "role": "ROLE_USER",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Navigate to my profile."
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncRequest"
    },
    {
      "id": "cookbook-core-platform-scheduling-build-scheduled-agents-json-02-response",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 3: Drive an agent turn from the callback. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "runId": "9d4c2e1f-...",
        "status": "AGENT_STATUS_COMPLETED",
        "messages": [
          {
            "role": "ROLE_ASSISTANT",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "Here is your daily briefing…"
              }
            ],
            "generatedBy": "9d4c2e1f-..."
          }
        ],
        "aggregateUsage": {
          "promptTokens": 412,
          "completionTokens": 88,
          "totalTokens": 500
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-generation-json-04-response",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Separate recipe: wait for a backend summary in the response. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "runId": "9d4c...",
        "status": "AGENT_STATUS_COMPLETED",
        "messages": [
          {
            "role": "ROLE_ASSISTANT",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "…"
              }
            ],
            "generatedBy": "9d4c..."
          }
        ],
        "aggregateUsage": {
          "promptTokens": 412,
          "completionTokens": 88,
          "totalTokens": 500
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-generation-json-05-response",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Recover a summary that failed or returned no explanation. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "runId": "9d4c...",
        "status": "AGENT_STATUS_FAILED"
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncResponse"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-build-agent-with-tools-json-02-response",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 2: Ask to open the profile and retain the pending call. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "runId": "64403669-5989-4ec3-ad9c-d84223f9679f",
        "status": "AGENT_STATUS_AWAITING_CLIENT_TOOLS",
        "clientToolCursor": 1,
        "pendingClientTools": [
          {
            "id": "call_abc123",
            "name": "navigate_to",
            "argumentsJson": {
              "screen": "/profile"
            },
            "isClientTool": true,
            "clientToolDeadlineAt": "2026-08-10T10:04:11Z"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncResponse"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-using-tools-json-02-response",
      "operationId": "sendMessageSync",
      "operationKey": "conversations:sendMessageSync",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 1: Receive the complete navigation call. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "runId": "cf9f08e7-4486-41e1-bac1-b9428d1aeb85",
        "status": "AGENT_STATUS_AWAITING_CLIENT_TOOLS",
        "clientToolCursor": 1,
        "pendingClientTools": [
          {
            "id": "call_306135",
            "name": "navigate_to",
            "argumentsJson": {
              "screen": "/profile"
            },
            "isClientTool": true,
            "clientToolDeadlineAt": "2026-09-02T06:43:24.304Z"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SendMessageSyncResponse"
    },
    {
      "id": "conversations-updateSettings-request",
      "operationId": "updateSettings",
      "operationKey": "conversations:updateSettings",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace settings on an existing conversation; include every setting you want to retain.",
      "payload": {
        "conversationKey": "example_123",
        "settings": {
          "maxLoops": 6,
          "maxParallelTools": 3
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateSettingsRequest"
    },
    {
      "id": "conversations-updateSettings-response",
      "operationId": "updateSettings",
      "operationKey": "conversations:updateSettings",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "settings": {
          "interruptPolicy": "INTERRUPT_POLICY_REJECT_NEW",
          "maxLoops": 1,
          "maxParallelTools": 1,
          "mcpServers": [
            {
              "serverId": "example_123",
              "enabled": true,
              "priority": 1,
              "allowlistToolPatterns": [
                "example"
              ],
              "blocklistToolPatterns": [
                "example"
              ]
            }
          ],
          "toolPolicy": {
            "requireApprovalToolNamePatterns": [
              "example"
            ],
            "requireApprovalServerIds": [
              "example_123"
            ],
            "autoApproveToolNamePatterns": [
              "example"
            ],
            "autoApproveServerIds": [
              "example_123"
            ],
            "approvalMode": "APPROVAL_MODE_MIXED",
            "clientToolMode": "CLIENT_TOOL_MODE_MIXED",
            "approvalTimeoutMs": 1,
            "failOnApprovalTimeoutToolNamePatterns": [
              "example"
            ],
            "stableSortByCallIndexOnTie": true,
            "maxParallelToolCalls": 1,
            "maxToolCallsPerLoop": 1,
            "maxTotalToolCalls": 1,
            "retriableToolNamePatterns": [
              "example"
            ],
            "maxRetries": 1,
            "retryableErrorSubstrings": [
              "example"
            ],
            "nonRetryableErrorSubstrings": [
              "example"
            ],
            "clientToolTimeoutMs": 1,
            "failureMode": "FAILURE_MODE_CONTINUE"
          },
          "promptVariables": {
            "example": "value"
          }
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_UpdateSettingsResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-index-02-request",
      "operationId": "updateSettings",
      "operationKey": "conversations:updateSettings",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for 2. Enable research for the conversation. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "thread_abc123",
        "settings": {
          "mcpServers": [
            {
              "serverId": "built-in:tavily"
            }
          ]
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateSettingsRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-configuration-02-request",
      "operationId": "updateSettings",
      "operationKey": "conversations:updateSettings",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 2: Keep one unresolved turn at a time. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "settings": {
          "interruptPolicy": "INTERRUPT_POLICY_REJECT_NEW",
          "maxLoops": 4
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateSettingsRequest"
    },
    {
      "id": "conversations-updatePromptVariables-request",
      "operationId": "updatePromptVariables",
      "operationKey": "conversations:updatePromptVariables",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Merge a destination variable into an existing conversation’s prompt variables.",
      "payload": {
        "conversationKey": "example_123",
        "variables": {
          "destination": "Paris"
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdatePromptVariablesRequest"
    },
    {
      "id": "conversations-updatePromptVariables-response",
      "operationId": "updatePromptVariables",
      "operationKey": "conversations:updatePromptVariables",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "settings": {
          "interruptPolicy": "INTERRUPT_POLICY_REJECT_NEW",
          "maxLoops": 1,
          "maxParallelTools": 1,
          "mcpServers": [
            {
              "serverId": "example_123",
              "enabled": true,
              "priority": 1,
              "allowlistToolPatterns": [
                "example"
              ],
              "blocklistToolPatterns": [
                "example"
              ]
            }
          ],
          "toolPolicy": {
            "requireApprovalToolNamePatterns": [
              "example"
            ],
            "requireApprovalServerIds": [
              "example_123"
            ],
            "autoApproveToolNamePatterns": [
              "example"
            ],
            "autoApproveServerIds": [
              "example_123"
            ],
            "approvalMode": "APPROVAL_MODE_MIXED",
            "clientToolMode": "CLIENT_TOOL_MODE_MIXED",
            "approvalTimeoutMs": 1,
            "failOnApprovalTimeoutToolNamePatterns": [
              "example"
            ],
            "stableSortByCallIndexOnTie": true,
            "maxParallelToolCalls": 1,
            "maxToolCallsPerLoop": 1,
            "maxTotalToolCalls": 1,
            "retriableToolNamePatterns": [
              "example"
            ],
            "maxRetries": 1,
            "retryableErrorSubstrings": [
              "example"
            ],
            "nonRetryableErrorSubstrings": [
              "example"
            ],
            "clientToolTimeoutMs": 1,
            "failureMode": "FAILURE_MODE_CONTINUE"
          },
          "promptVariables": {
            "example": "value"
          }
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_UpdatePromptVariablesResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-configuration-03-request",
      "operationId": "updatePromptVariables",
      "operationKey": "conversations:updatePromptVariables",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: personalize the profile for this customer. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "variables": {
          "userName": "Jane",
          "planTier": "pro"
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdatePromptVariablesRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-configuration-json-03-request",
      "operationId": "updatePromptVariables",
      "operationKey": "conversations:updatePromptVariables",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: personalize the profile for this customer. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "variables": {
          "planTier": "enterprise"
        },
        "updateMask": "planTier"
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdatePromptVariablesRequest"
    },
    {
      "id": "conversations-updateDefaultGenerationConfig-request",
      "operationId": "updateDefaultGenerationConfig",
      "operationKey": "conversations:updateDefaultGenerationConfig",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Replace the default generation configuration on an existing conversation.",
      "payload": {
        "conversationKey": "example_123",
        "defaultGenerationConfig": {
          "languagePreference": "en-US",
          "maxOutputTokens": 512
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateDefaultGenerationConfigRequest"
    },
    {
      "id": "conversations-updateDefaultGenerationConfig-response",
      "operationId": "updateDefaultGenerationConfig",
      "operationKey": "conversations:updateDefaultGenerationConfig",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "defaultGenerationConfig": {
          "model": "example",
          "models": [
            "example"
          ],
          "systemPrompt": "Example text",
          "modelRoutingFilter": {
            "minContextLength": "1",
            "minMaxCompletionTokens": "1",
            "requiredInputModalities": [
              "example"
            ],
            "requiredOutputModalities": [
              "example"
            ],
            "maxPromptCost": 1,
            "maxCompletionCost": 1,
            "excludeModerated": true,
            "requiredParameters": [
              "example"
            ]
          },
          "provider": {
            "order": [
              "example"
            ],
            "allowFallbacks": true,
            "requireParameters": true,
            "dataCollection": "DATA_COLLECTION_MODE_ALLOW",
            "zdr": true,
            "only": [
              "example"
            ],
            "ignore": [
              "example"
            ],
            "quantizations": [
              "example"
            ],
            "sort": "PROVIDER_SORT_PRICE",
            "enforceDistillableText": true
          },
          "reasoning": {
            "effort": "EFFORT_HIGH",
            "maxTokens": 1,
            "exclude": true,
            "includeReasoningHistory": true
          },
          "usage": {
            "include": true
          },
          "transforms": [
            "example"
          ],
          "tools": [
            {
              "name": "example",
              "description": "example",
              "serverId": "example_123",
              "tags": [
                "example"
              ],
              "documentationUrl": "https://example.com/resource"
            }
          ],
          "toolChoice": {
            "kind": "TOOL_CHOICE_KIND_AUTO",
            "specificToolName": "example"
          },
          "clientTools": [
            {
              "name": "example",
              "description": "example",
              "serverId": "example_123",
              "tags": [
                "example"
              ],
              "documentationUrl": "https://example.com/resource"
            }
          ],
          "toolPolicy": {
            "requireApprovalToolNamePatterns": [
              "example"
            ],
            "requireApprovalServerIds": [
              "example_123"
            ],
            "autoApproveToolNamePatterns": [
              "example"
            ],
            "autoApproveServerIds": [
              "example_123"
            ],
            "approvalMode": "APPROVAL_MODE_MIXED",
            "clientToolMode": "CLIENT_TOOL_MODE_MIXED",
            "approvalTimeoutMs": 1,
            "failOnApprovalTimeoutToolNamePatterns": [
              "example"
            ],
            "stableSortByCallIndexOnTie": true,
            "maxParallelToolCalls": 1,
            "maxToolCallsPerLoop": 1,
            "maxTotalToolCalls": 1,
            "retriableToolNamePatterns": [
              "example"
            ],
            "maxRetries": 1,
            "retryableErrorSubstrings": [
              "example"
            ],
            "nonRetryableErrorSubstrings": [
              "example"
            ],
            "clientToolTimeoutMs": 1,
            "failureMode": "FAILURE_MODE_CONTINUE"
          },
          "temperature": 1,
          "topP": 1,
          "maxOutputTokens": 1,
          "frequencyPenalty": 1,
          "presencePenalty": 1,
          "stopSequences": [
            "example"
          ],
          "seed": "1",
          "responseFormat": {
            "jsonObject": true,
            "schemaName": "example",
            "validate": true,
            "maxValidationRetries": 1,
            "responseHealing": true
          },
          "allowParallelToolCalls": true,
          "topK": 1,
          "repetitionPenalty": 1,
          "logitBias": {},
          "topLogprobs": 1,
          "minP": 1,
          "topA": 1,
          "user": "example",
          "modalities": [
            "MODALITY_TEXT"
          ],
          "plugins": [
            {
              "id": "example_123"
            }
          ],
          "languagePreference": "en-US",
          "timeAware": {
            "includeCurrentTime": true,
            "includeMessageTimestamps": true,
            "includeFileTimestamps": true,
            "timezone": "example",
            "timestampFormat": ""
          },
          "turnContext": {
            "enabled": true,
            "includeToolGuidance": true,
            "format": "minimal"
          },
          "mem0": {
            "enabled": true,
            "searchTopK": 1,
            "searchThreshold": 1,
            "injectAsSystemContext": true,
            "searchQueryOverride": "Example text",
            "enableRerank": true,
            "addMemoriesAsync": true,
            "customExtractionPrompt": "Example text",
            "enableGraph": true,
            "agentIdOverride": "example_123",
            "exposeAsMcpTool": true,
            "includeAssistantMessages": true,
            "injectMemoryTimestamps": true
          },
          "requestTimeoutSeconds": 1,
          "fileResolution": {
            "failureMode": "FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION"
          },
          "clearTools": true
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_UpdateDefaultGenerationConfigResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-configuration-01-request",
      "operationId": "updateDefaultGenerationConfig",
      "operationKey": "conversations:updateDefaultGenerationConfig",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 1: Set the model and answer length. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "defaultGenerationConfig": {
          "model": "anthropic/claude-sonnet-5",
          "temperature": 0.7,
          "maxOutputTokens": 2048,
          "topP": 0.9
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateDefaultGenerationConfigRequest"
    },
    {
      "id": "cookbook-managed-agents-memory-knowledge-index-json-02-request",
      "operationId": "updateDefaultGenerationConfig",
      "operationKey": "conversations:updateDefaultGenerationConfig",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 4: Include relevant memory in later replies. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "conv_abc",
        "defaultGenerationConfig": {
          "mem0": {
            "enabled": true,
            "searchTopK": 5,
            "searchThreshold": 0.3,
            "injectAsSystemContext": true,
            "injectMemoryTimestamps": true
          }
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateDefaultGenerationConfigRequest"
    },
    {
      "id": "conversations-updateContextManagementSettings-request",
      "operationId": "updateContextManagementSettings",
      "operationKey": "conversations:updateContextManagementSettings",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Update the window size for an existing conversation already using the windowing strategy.",
      "payload": {
        "conversationKey": "example_123",
        "contextManagementSettings": {
          "strategy": "CONTEXT_STRATEGY_WINDOWING",
          "windowingConfig": {
            "maxMessages": 50
          }
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateContextManagementSettingsRequest"
    },
    {
      "id": "conversations-updateContextManagementSettings-response",
      "operationId": "updateContextManagementSettings",
      "operationKey": "conversations:updateContextManagementSettings",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "contextManagementSettings": {
          "strategy": "CONTEXT_STRATEGY_COMPACTION",
          "compactionConfig": {
            "mode": "COMPACTION_MODE_SYNC",
            "preserveRecent": 1
          },
          "windowingConfig": {
            "maxMessages": 1
          },
          "selectiveExclusionConfig": {
            "excludeToolResults": true,
            "excludeImages": true,
            "excludeFiles": true,
            "excludeReasoning": true
          }
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_UpdateContextManagementSettingsResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-context-management-01-request",
      "operationId": "updateContextManagementSettings",
      "operationKey": "conversations:updateContextManagementSettings",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "contextManagementSettings": {
          "strategy": "CONTEXT_STRATEGY_COMPACTION",
          "compactionConfig": {
            "mode": "COMPACTION_MODE_SYNC",
            "threshold": {
              "percentage": 80
            },
            "preserveRecent": 10
          }
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateContextManagementSettingsRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-context-management-04-request",
      "operationId": "updateContextManagementSettings",
      "operationKey": "conversations:updateContextManagementSettings",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Variant: omit a file or tool result that later replies no longer need. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "contextManagementSettings": {
          "strategy": "CONTEXT_STRATEGY_COMPACTION",
          "selectiveExclusionConfig": {
            "excludeToolResults": true,
            "excludeImages": true
          }
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateContextManagementSettingsRequest"
    },
    {
      "id": "conversations-compactConversation-request",
      "operationId": "compactConversation",
      "operationKey": "conversations:compactConversation",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "conversationKey": "example_123"
      },
      "schemaName": "llm_v1_services_gateway_v1_CompactConversationRequest"
    },
    {
      "id": "conversations-compactConversation-response",
      "operationId": "compactConversation",
      "operationKey": "conversations:compactConversation",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "compactionId": "example_123",
        "tokensBefore": 1,
        "tokensAfter": 1,
        "tokensSaved": 1,
        "durationMs": "1",
        "status": "COMPACTION_STATUS_PENDING"
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_CompactConversationResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-context-management-02-request",
      "operationId": "compactConversation",
      "operationKey": "conversations:compactConversation",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001"
      },
      "schemaName": "llm_v1_services_gateway_v1_CompactConversationRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-context-management-json-01-response",
      "operationId": "compactConversation",
      "operationKey": "conversations:compactConversation",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "compactionId": "cmp_a1b2c3d4",
        "tokensBefore": 48211,
        "tokensAfter": 604,
        "tokensSaved": 47607,
        "durationMs": "4120",
        "status": "COMPACTION_STATUS_COMPLETED"
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_CompactConversationResponse"
    },
    {
      "id": "conversations-getConversationState-request",
      "operationId": "getConversationState",
      "operationKey": "conversations:getConversationState",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "conversationKey": "example_123"
      },
      "schemaName": "llm_v1_services_gateway_v1_GetConversationStateRequest"
    },
    {
      "id": "conversations-getConversationState-response",
      "operationId": "getConversationState",
      "operationKey": "conversations:getConversationState",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "messageHistory": [
          {
            "role": "ROLE_SYSTEM",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "Example text",
                "cachePreferred": true
              }
            ],
            "toolCalls": [
              {
                "id": "example_123",
                "name": "example",
                "status": "TOOL_EXECUTION_STATUS_PENDING",
                "serverId": "example_123",
                "isClientTool": true,
                "description": "example",
                "approvedBy": "example",
                "endReason": "example"
              }
            ],
            "name": "example",
            "timestamp": "2026-09-16T12:00:00Z",
            "messageId": "example_123",
            "annotations": [
              {
                "kind": "ANNOTATION_KIND_URL_CITATION"
              }
            ],
            "sequence": "1",
            "generatedBy": "example",
            "usage": {
              "promptTokens": 1,
              "completionTokens": 1,
              "totalTokens": 1,
              "costEstimate": 1,
              "isByok": true
            },
            "model": "example",
            "generationContext": {
              "languagePreference": "en-US",
              "resolvedSystemPrompt": "Example text",
              "profileId": "example_123",
              "model": "example",
              "promptSource": "PROMPT_SOURCE_CLIENT_OVERRIDE",
              "profileVersion": 1,
              "fragmentsVersion": 1,
              "profileRenderFailed": true,
              "resolvedPromptHash": "Example text",
              "resolvedUserContext": "Example text"
            },
            "clientContext": {},
            "feedback": [
              {
                "kind": "FEEDBACK_KIND_THUMB",
                "thumbUp": true,
                "reason": "example",
                "ratedBy": "example"
              }
            ],
            "sourceUserMessageId": "example_123",
            "finishReason": "example"
          }
        ],
        "defaultGenerationConfig": {
          "model": "example",
          "models": [
            "example"
          ],
          "systemPrompt": "Example text",
          "modelRoutingFilter": {
            "minContextLength": "1",
            "minMaxCompletionTokens": "1",
            "requiredInputModalities": [
              "example"
            ],
            "requiredOutputModalities": [
              "example"
            ],
            "maxPromptCost": 1,
            "maxCompletionCost": 1,
            "excludeModerated": true,
            "requiredParameters": [
              "example"
            ]
          },
          "provider": {
            "order": [
              "example"
            ],
            "allowFallbacks": true,
            "requireParameters": true,
            "dataCollection": "DATA_COLLECTION_MODE_ALLOW",
            "zdr": true,
            "only": [
              "example"
            ],
            "ignore": [
              "example"
            ],
            "quantizations": [
              "example"
            ],
            "sort": "PROVIDER_SORT_PRICE",
            "enforceDistillableText": true
          },
          "reasoning": {
            "effort": "EFFORT_HIGH",
            "maxTokens": 1,
            "exclude": true,
            "includeReasoningHistory": true
          },
          "usage": {
            "include": true
          },
          "transforms": [
            "example"
          ],
          "tools": [
            {
              "name": "example",
              "description": "example",
              "serverId": "example_123",
              "tags": [
                "example"
              ],
              "documentationUrl": "https://example.com/resource"
            }
          ],
          "toolChoice": {
            "kind": "TOOL_CHOICE_KIND_AUTO",
            "specificToolName": "example"
          },
          "clientTools": [
            {
              "name": "example",
              "description": "example",
              "serverId": "example_123",
              "tags": [
                "example"
              ],
              "documentationUrl": "https://example.com/resource"
            }
          ],
          "toolPolicy": {
            "requireApprovalToolNamePatterns": [
              "example"
            ],
            "requireApprovalServerIds": [
              "example_123"
            ],
            "autoApproveToolNamePatterns": [
              "example"
            ],
            "autoApproveServerIds": [
              "example_123"
            ],
            "approvalMode": "APPROVAL_MODE_MIXED",
            "clientToolMode": "CLIENT_TOOL_MODE_MIXED",
            "approvalTimeoutMs": 1,
            "failOnApprovalTimeoutToolNamePatterns": [
              "example"
            ],
            "stableSortByCallIndexOnTie": true,
            "maxParallelToolCalls": 1,
            "maxToolCallsPerLoop": 1,
            "maxTotalToolCalls": 1,
            "retriableToolNamePatterns": [
              "example"
            ],
            "maxRetries": 1,
            "retryableErrorSubstrings": [
              "example"
            ],
            "nonRetryableErrorSubstrings": [
              "example"
            ],
            "clientToolTimeoutMs": 1,
            "failureMode": "FAILURE_MODE_CONTINUE"
          },
          "temperature": 1,
          "topP": 1,
          "maxOutputTokens": 1,
          "frequencyPenalty": 1,
          "presencePenalty": 1,
          "stopSequences": [
            "example"
          ],
          "seed": "1",
          "responseFormat": {
            "jsonObject": true,
            "schemaName": "example",
            "validate": true,
            "maxValidationRetries": 1,
            "responseHealing": true
          },
          "allowParallelToolCalls": true,
          "topK": 1,
          "repetitionPenalty": 1,
          "logitBias": {},
          "topLogprobs": 1,
          "minP": 1,
          "topA": 1,
          "user": "example",
          "modalities": [
            "MODALITY_TEXT"
          ],
          "plugins": [
            {
              "id": "example_123"
            }
          ],
          "languagePreference": "en-US",
          "timeAware": {
            "includeCurrentTime": true,
            "includeMessageTimestamps": true,
            "includeFileTimestamps": true,
            "timezone": "example",
            "timestampFormat": ""
          },
          "turnContext": {
            "enabled": true,
            "includeToolGuidance": true,
            "format": "minimal"
          },
          "mem0": {
            "enabled": true,
            "searchTopK": 1,
            "searchThreshold": 1,
            "injectAsSystemContext": true,
            "searchQueryOverride": "Example text",
            "enableRerank": true,
            "addMemoriesAsync": true,
            "customExtractionPrompt": "Example text",
            "enableGraph": true,
            "agentIdOverride": "example_123",
            "exposeAsMcpTool": true,
            "includeAssistantMessages": true,
            "injectMemoryTimestamps": true
          },
          "requestTimeoutSeconds": 1,
          "fileResolution": {
            "failureMode": "FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION"
          },
          "clearTools": true
        },
        "settings": {
          "interruptPolicy": "INTERRUPT_POLICY_REJECT_NEW",
          "maxLoops": 1,
          "maxParallelTools": 1,
          "mcpServers": [
            {
              "serverId": "example_123",
              "enabled": true,
              "priority": 1,
              "allowlistToolPatterns": [
                "example"
              ],
              "blocklistToolPatterns": [
                "example"
              ]
            }
          ],
          "toolPolicy": {
            "requireApprovalToolNamePatterns": [
              "example"
            ],
            "requireApprovalServerIds": [
              "example_123"
            ],
            "autoApproveToolNamePatterns": [
              "example"
            ],
            "autoApproveServerIds": [
              "example_123"
            ],
            "approvalMode": "APPROVAL_MODE_MIXED",
            "clientToolMode": "CLIENT_TOOL_MODE_MIXED",
            "approvalTimeoutMs": 1,
            "failOnApprovalTimeoutToolNamePatterns": [
              "example"
            ],
            "stableSortByCallIndexOnTie": true,
            "maxParallelToolCalls": 1,
            "maxToolCallsPerLoop": 1,
            "maxTotalToolCalls": 1,
            "retriableToolNamePatterns": [
              "example"
            ],
            "maxRetries": 1,
            "retryableErrorSubstrings": [
              "example"
            ],
            "nonRetryableErrorSubstrings": [
              "example"
            ],
            "clientToolTimeoutMs": 1,
            "failureMode": "FAILURE_MODE_CONTINUE"
          },
          "promptVariables": {
            "example": "value"
          }
        },
        "activeRunId": "example_123",
        "activeRunning": true,
        "contextManagementSettings": {
          "strategy": "CONTEXT_STRATEGY_COMPACTION",
          "compactionConfig": {
            "mode": "COMPACTION_MODE_SYNC",
            "preserveRecent": 1
          },
          "windowingConfig": {
            "maxMessages": 1
          },
          "selectiveExclusionConfig": {
            "excludeToolResults": true,
            "excludeImages": true,
            "excludeFiles": true,
            "excludeReasoning": true
          }
        },
        "compactions": [
          {
            "id": "example_123",
            "startSequence": "1",
            "endSequence": "1",
            "summary": "example",
            "originalTokenCount": 1,
            "summaryTokenCount": 1,
            "modelUsed": "example",
            "createdAt": "2026-09-16T12:00:00Z",
            "status": "COMPACTION_STATUS_PENDING",
            "triggerReason": "COMPACTION_TRIGGER_REASON_THRESHOLD_EXCEEDED"
          }
        ],
        "compactionInProgress": true,
        "totalUsage": {
          "promptTokens": 1,
          "completionTokens": 1,
          "totalTokens": 1,
          "costEstimate": 1,
          "completionTokensDetails": {
            "reasoningTokens": 1,
            "imageTokens": 1,
            "audioTokens": 1
          },
          "promptTokensDetails": {
            "cachedTokens": 1,
            "cacheWriteTokens": 1,
            "audioTokens": 1,
            "videoTokens": 1
          },
          "costDetails": {
            "upstreamInferenceCost": 1,
            "upstreamInferencePromptCost": 1,
            "upstreamInferenceCompletionCost": 1
          },
          "isByok": true
        },
        "externalId": "example_123",
        "conversationKey": "example_123",
        "lastRunStatus": "AGENT_STATUS_ACTIVE"
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_GetConversationStateResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-04-request",
      "operationId": "getConversationState",
      "operationKey": "conversations:getConversationState",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Poll conversation state. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "b81d5345-c1f9-4fb9-b558-a6327c75b842"
      },
      "schemaName": "llm_v1_services_gateway_v1_GetConversationStateRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-context-management-03-request",
      "operationId": "getConversationState",
      "operationKey": "conversations:getConversationState",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001"
      },
      "schemaName": "llm_v1_services_gateway_v1_GetConversationStateRequest"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-json-04-response",
      "operationId": "getConversationState",
      "operationKey": "conversations:getConversationState",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Poll conversation state. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "messageHistory": [
          {
            "role": "ROLE_USER",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "What can you help me with?"
              }
            ],
            "timestamp": "2026-04-23T22:43:44.123Z",
            "messageId": "2a1f33ce-1abc-4a5d-9e22-1c0d1a2b3c4d",
            "sequence": "1"
          }
        ],
        "activeRunId": "64403669-5989-4ec3-ad9c-d84223f9679f",
        "activeRunning": true
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_GetConversationStateResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-build-chat-assistant-json-05-response",
      "operationId": "getConversationState",
      "operationKey": "conversations:getConversationState",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Poll conversation state. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "messageHistory": [
          {
            "role": "ROLE_USER",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "What can you help me with?"
              }
            ],
            "timestamp": "2026-04-23T22:43:44.123Z",
            "messageId": "2a1f33ce-1abc-4a5d-9e22-1c0d1a2b3c4d",
            "sequence": "1"
          },
          {
            "role": "ROLE_ASSISTANT",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "I can assist you with a variety of tasks..."
              }
            ],
            "timestamp": "2026-04-23T22:43:51.653Z",
            "messageId": "3f2d44de-8db6-4f67-8e51-5c600902491b",
            "sequence": "2",
            "generatedBy": "64403669-5989-4ec3-ad9c-d84223f9679f",
            "usage": {
              "promptTokens": 359,
              "completionTokens": 65,
              "totalTokens": 424
            },
            "model": "google/gemini-3.1-flash-lite"
          }
        ],
        "lastRunStatus": "AGENT_STATUS_COMPLETED"
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_GetConversationStateResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-generation-json-02-response",
      "operationId": "getConversationState",
      "operationKey": "conversations:getConversationState",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 1: Send once and read the same conversation. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "messageHistory": [
          {
            "role": "ROLE_USER",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "Hello, what can you help me with?"
              }
            ],
            "timestamp": "2026-04-23T22:43:44.123Z",
            "messageId": "2a1f33ce-1abc-4a5d-9e22-1c0d1a2b3c4d",
            "sequence": "1"
          }
        ],
        "activeRunId": "64403669-5989-4ec3-ad9c-d84223f9679f",
        "activeRunning": true
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_GetConversationStateResponse"
    },
    {
      "id": "cookbook-managed-agents-conversations-generation-json-03-response",
      "operationId": "getConversationState",
      "operationKey": "conversations:getConversationState",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 1: Send once and read the same conversation. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "messageHistory": [
          {
            "role": "ROLE_USER",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "Hello, what can you help me with?"
              }
            ],
            "timestamp": "2026-04-23T22:43:44.123Z",
            "messageId": "2a1f33ce-1abc-4a5d-9e22-1c0d1a2b3c4d",
            "sequence": "1"
          },
          {
            "role": "ROLE_ASSISTANT",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "I can assist you with..."
              }
            ],
            "timestamp": "2026-04-23T22:43:51.653Z",
            "messageId": "3f2d44de-8db6-4f67-8e51-5c600902491b",
            "sequence": "2",
            "generatedBy": "64403669-5989-4ec3-ad9c-d84223f9679f",
            "usage": {
              "promptTokens": 359,
              "completionTokens": 65,
              "totalTokens": 424
            },
            "model": "google/gemini-3.1-flash-lite"
          }
        ],
        "lastRunStatus": "AGENT_STATUS_COMPLETED"
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_GetConversationStateResponse"
    },
    {
      "id": "conversations-createDailySession-request",
      "operationId": "createDailySession",
      "operationKey": "conversations:createDailySession",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "conversationKey": "example_123"
      },
      "schemaName": "llm_v1_services_gateway_v1_CreateDailySessionRequest"
    },
    {
      "id": "conversations-createDailySession-response",
      "operationId": "createDailySession",
      "operationKey": "conversations:createDailySession",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "session": {
          "agentName": "example",
          "sessionId": "example_123",
          "dailyRoom": "example",
          "dailyToken": "example",
          "userData": {},
          "dailyRoomProperties": {
            "nbf": "1",
            "exp": "1",
            "maxParticipants": 1,
            "enablePeopleUi": true,
            "enablePipUi": true,
            "enableEmojiReactions": true,
            "enableHandRaising": true,
            "enablePrejoinUi": true,
            "enableLiveCaptionsUi": true,
            "enableNetworkUi": true,
            "enableNoiseCancellationUi": true,
            "enableBreakoutRooms": true,
            "enableKnocking": true,
            "ownerOnlyBroadcast": true,
            "enforceUniqueUserIds": true,
            "enableScreenshare": true,
            "enableVideoProcessingUi": true,
            "enableChat": true,
            "enableSharedChatHistory": true,
            "enableAdvancedChat": true,
            "enableHiddenParticipants": true,
            "startVideoOff": true,
            "startAudioOff": true,
            "enableRecording": "RECORDING_MODE_CLOUD",
            "ejectAtRoomExp": true,
            "ejectAfterElapsed": 1,
            "enableMeshSfu": true,
            "sfuSwitchover": 1,
            "enableAdaptiveSimulcast": true,
            "enableMultipartyAdaptiveSimulcast": true,
            "experimentalOptimizeLargeCalls": true,
            "lang": "example",
            "meetingJoinHook": "example",
            "geo": "example",
            "rtmpGeo": "example",
            "disableRtmpGeoFallback": true,
            "recordingsTemplate": "example",
            "transcriptionTemplate": "example"
          },
          "dailyMeetingTokenProperties": {
            "isOwner": true,
            "enableAutoRecording": true
          },
          "startedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_CreateDailySessionResponse"
    },
    {
      "id": "cookbook-managed-agents-voice-media-index-01-request",
      "operationId": "createDailySession",
      "operationKey": "conversations:createDailySession",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 1: Start the voice session for the existing thread. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "agentName": "my-voice-agent",
        "createDailyRoom": true,
        "dailyRoomProperties": {
          "enableRecording": "RECORDING_MODE_DISABLED"
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_CreateDailySessionRequest"
    },
    {
      "id": "cookbook-managed-agents-voice-media-index-json-01-response",
      "operationId": "createDailySession",
      "operationKey": "conversations:createDailySession",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 2: Join the room and confirm the exchange. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "session": {
          "sessionId": "sess_abc123",
          "agentName": "my-voice-agent",
          "dailyRoom": "travila-abc123",
          "dailyToken": "eyJ...",
          "startedAt": "2026-08-17T10:00:00Z",
          "userData": {
            "fields": {
              "displayName": "Alex"
            }
          },
          "dailyRoomProperties": {
            "exp": "1786964400"
          },
          "dailyMeetingTokenProperties": {
            "isOwner": false
          }
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_CreateDailySessionResponse"
    },
    {
      "id": "conversations-mintSttToken-request",
      "operationId": "mintSttToken",
      "operationKey": "conversations:mintSttToken",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Request a speech-to-text token using the configured provider; no body fields are required.",
      "payload": {},
      "schemaName": "llm_v1_services_gateway_v1_MintSttTokenRequest"
    },
    {
      "id": "conversations-mintSttToken-response",
      "operationId": "mintSttToken",
      "operationKey": "conversations:mintSttToken",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "token": "example",
        "expiresInSeconds": 1
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_MintSttTokenResponse"
    },
    {
      "id": "cookbook-managed-agents-voice-media-index-json-02-response",
      "operationId": "mintSttToken",
      "operationKey": "conversations:mintSttToken",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Separate recipe: dictate a draft without starting a voice agent. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "token": "stt_eph_...",
        "expiresInSeconds": 600
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_MintSttTokenResponse"
    },
    {
      "id": "conversations-listPendingApprovals-request",
      "operationId": "listPendingApprovals",
      "operationKey": "conversations:listPendingApprovals",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "conversationKey": "example_123"
      },
      "schemaName": "llm_v1_services_gateway_v1_ListPendingApprovalsRequest"
    },
    {
      "id": "conversations-listPendingApprovals-response",
      "operationId": "listPendingApprovals",
      "operationKey": "conversations:listPendingApprovals",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "toolCalls": [
          {
            "id": "example_123",
            "name": "example",
            "argumentsJson": {
              "example": "value"
            },
            "status": "TOOL_EXECUTION_STATUS_PENDING",
            "resultJson": {
              "example": "value"
            },
            "executedAt": "2026-09-16T12:00:00Z",
            "serverId": "example_123",
            "isClientTool": true,
            "description": "example",
            "parametersJsonSchema": {
              "example": "value"
            },
            "requiresApprovalAt": "2026-09-16T12:00:00Z",
            "approvedAt": "2026-09-16T12:00:00Z",
            "approvedBy": "example",
            "executionDuration": "1s",
            "endReason": "example",
            "clientToolDeadlineAt": "2026-09-16T12:00:00Z"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_ListPendingApprovalsResponse"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-using-tools-01-request",
      "operationId": "listPendingApprovals",
      "operationKey": "conversations:listPendingApprovals",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 2: Show the action awaiting a decision. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001"
      },
      "schemaName": "llm_v1_services_gateway_v1_ListPendingApprovalsRequest"
    },
    {
      "id": "conversations-submitToolApprovals-request",
      "operationId": "submitToolApprovals",
      "operationKey": "conversations:submitToolApprovals",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Approve a pending tool call; use its ID from listPendingApprovals.",
      "payload": {
        "conversationKey": "example_123",
        "approvals": [
          {
            "toolCallId": "tool_call_123",
            "approved": true
          }
        ]
      },
      "schemaName": "llm_v1_services_gateway_v1_SubmitToolApprovalsRequest"
    },
    {
      "id": "conversations-submitToolApprovals-response",
      "operationId": "submitToolApprovals",
      "operationKey": "conversations:submitToolApprovals",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SubmitToolApprovalsResponse"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-using-tools-02-request",
      "operationId": "submitToolApprovals",
      "operationKey": "conversations:submitToolApprovals",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 3: Submit the decision and inspect the outcome. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "approvals": [
          {
            "toolCallId": "call_abc123",
            "approved": true
          }
        ]
      },
      "schemaName": "llm_v1_services_gateway_v1_SubmitToolApprovalsRequest"
    },
    {
      "id": "conversations-submitClientToolResults-request",
      "operationId": "submitClientToolResults",
      "operationKey": "conversations:submitClientToolResults",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Return a result for a pending client tool call; use its actual ID, name and expected result shape.",
      "payload": {
        "conversationKey": "example_123",
        "results": [
          {
            "toolCallId": "tool_call_123",
            "toolName": "lookup_booking",
            "resultJson": {
              "bookingStatus": "confirmed"
            }
          }
        ]
      },
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsRequest"
    },
    {
      "id": "conversations-submitClientToolResults-response",
      "operationId": "submitClientToolResults",
      "operationKey": "conversations:submitClientToolResults",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "runId": "example_123"
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsResponse"
    },
    {
      "id": "conversations-submitClientToolResultsSync-request",
      "operationId": "submitClientToolResultsSync",
      "operationKey": "conversations:submitClientToolResultsSync",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Return a result for a pending client tool call; use its actual ID, name and expected result shape.",
      "payload": {
        "conversationKey": "example_123",
        "results": [
          {
            "toolCallId": "tool_call_123",
            "toolName": "lookup_booking",
            "resultJson": {
              "bookingStatus": "confirmed"
            }
          }
        ]
      },
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncRequest"
    },
    {
      "id": "conversations-submitClientToolResultsSync-response",
      "operationId": "submitClientToolResultsSync",
      "operationKey": "conversations:submitClientToolResultsSync",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "runId": "example_123",
        "messages": [
          {
            "role": "ROLE_SYSTEM",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "Example text",
                "cachePreferred": true
              }
            ],
            "toolCalls": [
              {
                "id": "example_123",
                "name": "example",
                "status": "TOOL_EXECUTION_STATUS_PENDING",
                "serverId": "example_123",
                "isClientTool": true,
                "description": "example",
                "approvedBy": "example",
                "endReason": "example"
              }
            ],
            "name": "example",
            "timestamp": "2026-09-16T12:00:00Z",
            "messageId": "example_123",
            "annotations": [
              {
                "kind": "ANNOTATION_KIND_URL_CITATION"
              }
            ],
            "sequence": "1",
            "generatedBy": "example",
            "usage": {
              "promptTokens": 1,
              "completionTokens": 1,
              "totalTokens": 1,
              "costEstimate": 1,
              "isByok": true
            },
            "model": "example",
            "generationContext": {
              "languagePreference": "en-US",
              "resolvedSystemPrompt": "Example text",
              "profileId": "example_123",
              "model": "example",
              "promptSource": "PROMPT_SOURCE_CLIENT_OVERRIDE",
              "profileVersion": 1,
              "fragmentsVersion": 1,
              "profileRenderFailed": true,
              "resolvedPromptHash": "Example text",
              "resolvedUserContext": "Example text"
            },
            "clientContext": {},
            "feedback": [
              {
                "kind": "FEEDBACK_KIND_THUMB",
                "thumbUp": true,
                "reason": "example",
                "ratedBy": "example"
              }
            ],
            "sourceUserMessageId": "example_123",
            "finishReason": "example"
          }
        ],
        "status": "AGENT_STATUS_ACTIVE",
        "aggregateUsage": {
          "promptTokens": 1,
          "completionTokens": 1,
          "totalTokens": 1,
          "costEstimate": 1,
          "completionTokensDetails": {
            "reasoningTokens": 1,
            "imageTokens": 1,
            "audioTokens": 1
          },
          "promptTokensDetails": {
            "cachedTokens": 1,
            "cacheWriteTokens": 1,
            "audioTokens": 1,
            "videoTokens": 1
          },
          "costDetails": {
            "upstreamInferenceCost": 1,
            "upstreamInferencePromptCost": 1,
            "upstreamInferenceCompletionCost": 1
          },
          "isByok": true
        },
        "pendingClientTools": [
          {
            "id": "example_123",
            "name": "example",
            "argumentsJson": {
              "example": "value"
            },
            "status": "TOOL_EXECUTION_STATUS_PENDING",
            "resultJson": {
              "example": "value"
            },
            "executedAt": "2026-09-16T12:00:00Z",
            "serverId": "example_123",
            "isClientTool": true,
            "description": "example",
            "parametersJsonSchema": {
              "example": "value"
            },
            "requiresApprovalAt": "2026-09-16T12:00:00Z",
            "approvedAt": "2026-09-16T12:00:00Z",
            "approvedBy": "example",
            "executionDuration": "1s",
            "endReason": "example",
            "clientToolDeadlineAt": "2026-09-16T12:00:00Z"
          }
        ],
        "clientToolCursor": 1,
        "error": {
          "code": "ERROR_CODE_CANCELLED",
          "message": "example",
          "isTerminal": true,
          "details": {}
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncResponse"
    },
    {
      "id": "cookbook-developer-experience-local-tooling-testing-02-request",
      "operationId": "submitClientToolResultsSync",
      "operationKey": "conversations:submitClientToolResultsSync",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "b81d5345-c1f9-4fb9-b558-a6327c75b842",
        "clientToolCursor": 1,
        "results": [
          {
            "toolCallId": "call_abc123",
            "toolName": "navigate_to",
            "resultJson": {
              "navigated_to": "/profile"
            }
          }
        ]
      },
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncRequest"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-using-tools-04-request",
      "operationId": "submitClientToolResultsSync",
      "operationKey": "conversations:submitClientToolResultsSync",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 2: Validate, open and return the real result. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "clientToolCursor": 1,
        "results": [
          {
            "toolCallId": "call_306135",
            "toolName": "navigate_to",
            "resultJson": {
              "navigated_to": "/profile"
            }
          }
        ]
      },
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncRequest"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-build-agent-with-tools-json-03-response",
      "operationId": "submitClientToolResultsSync",
      "operationKey": "conversations:submitClientToolResultsSync",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 3: Navigate once and report what happened. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "runId": "64403669-5989-4ec3-ad9c-d84223f9679f",
        "status": "AGENT_STATUS_COMPLETED",
        "messages": [
          {
            "role": "ROLE_ASSISTANT",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "Taking you to your profile."
              }
            ],
            "finishReason": "stop"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncResponse"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-using-tools-json-03-response",
      "operationId": "submitClientToolResultsSync",
      "operationKey": "conversations:submitClientToolResultsSync",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response for Step 2: Validate, open and return the real result. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "runId": "cf9f08e7-4486-41e1-bac1-b9428d1aeb85",
        "status": "AGENT_STATUS_COMPLETED",
        "messages": [
          {
            "role": "ROLE_ASSISTANT",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "I've opened your profile."
              }
            ],
            "finishReason": "stop"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SubmitClientToolResultsSyncResponse"
    },
    {
      "id": "conversations-listPendingClientTools-request",
      "operationId": "listPendingClientTools",
      "operationKey": "conversations:listPendingClientTools",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "conversationKey": "example_123"
      },
      "schemaName": "llm_v1_services_gateway_v1_ListPendingClientToolsRequest"
    },
    {
      "id": "conversations-listPendingClientTools-response",
      "operationId": "listPendingClientTools",
      "operationKey": "conversations:listPendingClientTools",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "messageSequences": [
          "1"
        ],
        "messageIds": [
          "example_123"
        ],
        "toolCalls": [
          {
            "id": "example_123",
            "name": "example",
            "argumentsJson": {
              "example": "value"
            },
            "status": "TOOL_EXECUTION_STATUS_PENDING",
            "resultJson": {
              "example": "value"
            },
            "executedAt": "2026-09-16T12:00:00Z",
            "serverId": "example_123",
            "isClientTool": true,
            "description": "example",
            "parametersJsonSchema": {
              "example": "value"
            },
            "requiresApprovalAt": "2026-09-16T12:00:00Z",
            "approvedAt": "2026-09-16T12:00:00Z",
            "approvedBy": "example",
            "executionDuration": "1s",
            "endReason": "example",
            "clientToolDeadlineAt": "2026-09-16T12:00:00Z"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_ListPendingClientToolsResponse"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-using-tools-05-request",
      "operationId": "listPendingClientTools",
      "operationKey": "conversations:listPendingClientTools",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recover the original call after a disconnect. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001"
      },
      "schemaName": "llm_v1_services_gateway_v1_ListPendingClientToolsRequest"
    },
    {
      "id": "conversations-getToolCall-request",
      "operationId": "getToolCall",
      "operationKey": "conversations:getToolCall",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Inspect a tool call using an ID previously returned by the conversation.",
      "payload": {
        "conversationKey": "example_123",
        "toolCallId": "tool_call_123"
      },
      "schemaName": "llm_v1_services_gateway_v1_GetToolCallRequest"
    },
    {
      "id": "conversations-getToolCall-response",
      "operationId": "getToolCall",
      "operationKey": "conversations:getToolCall",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "messageSequence": "1",
        "messageId": "example_123",
        "toolCall": {
          "id": "example_123",
          "name": "example",
          "argumentsJson": {
            "example": "value"
          },
          "status": "TOOL_EXECUTION_STATUS_PENDING",
          "resultJson": {
            "example": "value"
          },
          "executedAt": "2026-09-16T12:00:00Z",
          "serverId": "example_123",
          "isClientTool": true,
          "description": "example",
          "parametersJsonSchema": {
            "example": "value"
          },
          "requiresApprovalAt": "2026-09-16T12:00:00Z",
          "approvedAt": "2026-09-16T12:00:00Z",
          "approvedBy": "example",
          "executionDuration": "1s",
          "endReason": "example",
          "clientToolDeadlineAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_GetToolCallResponse"
    },
    {
      "id": "cookbook-managed-agents-delegation-approvals-using-tools-06-request",
      "operationId": "getToolCall",
      "operationKey": "conversations:getToolCall",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Recover the original call after a disconnect. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "conversationKey": "support-chat-001",
        "toolCallId": "call_306135"
      },
      "schemaName": "llm_v1_services_gateway_v1_GetToolCallRequest"
    },
    {
      "id": "conversations-mcpListAvailableServers-request",
      "operationId": "mcpListAvailableServers",
      "operationKey": "conversations:mcpListAvailableServers",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Discover servers available in the authenticated scope; no body filters are supplied.",
      "payload": {},
      "schemaName": "llm_v1_services_gateway_v1_MCPListAvailableServersRequest"
    },
    {
      "id": "conversations-mcpListAvailableServers-response",
      "operationId": "mcpListAvailableServers",
      "operationKey": "conversations:mcpListAvailableServers",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "servers": [
          {
            "serverId": "example_123",
            "name": "example",
            "status": "MCP_SERVER_CONNECTION_STATUS_CONNECTED",
            "toolsDiscovered": 1,
            "lastDiscoveryDuration": "1s",
            "lastError": "example",
            "lastDiscoveryTime": "2026-09-16T12:00:00Z",
            "kind": "MCP_SERVER_KIND_INTERNAL"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_MCPListAvailableServersResponse"
    },
    {
      "id": "conversations-mcpGetServerInfo-request",
      "operationId": "mcpGetServerInfo",
      "operationKey": "conversations:mcpGetServerInfo",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Inspect a registered custom MCP server; replace the example server ID.",
      "payload": {
        "serverId": "custom:product-tools"
      },
      "schemaName": "llm_v1_services_gateway_v1_MCPGetServerInfoRequest"
    },
    {
      "id": "conversations-mcpGetServerInfo-response",
      "operationId": "mcpGetServerInfo",
      "operationKey": "conversations:mcpGetServerInfo",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "serverInfo": {
          "serverId": "example_123",
          "name": "example",
          "version": "example",
          "capabilities": [
            "example"
          ],
          "metadata": {},
          "status": "MCP_SERVER_CONNECTION_STATUS_CONNECTED",
          "availableTools": [
            {
              "name": "example",
              "description": "example",
              "serverId": "example_123",
              "tags": [
                "example"
              ],
              "documentationUrl": "https://example.com/resource"
            }
          ],
          "kind": "MCP_SERVER_KIND_INTERNAL"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_MCPGetServerInfoResponse"
    },
    {
      "id": "conversations-mcpListTools-request",
      "operationId": "mcpListTools",
      "operationKey": "conversations:mcpListTools",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "List tools exposed by a registered custom MCP server; replace the server ID.",
      "payload": {
        "servers": [
          {
            "serverId": "custom:product-tools",
            "enabled": true
          }
        ]
      },
      "schemaName": "llm_v1_services_gateway_v1_MCPListToolsRequest"
    },
    {
      "id": "conversations-mcpListTools-response",
      "operationId": "mcpListTools",
      "operationKey": "conversations:mcpListTools",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "tools": [
          {
            "name": "example",
            "description": "example",
            "parametersJsonSchema": {
              "example": "value"
            },
            "metadata": {},
            "serverId": "example_123",
            "tags": [
              "example"
            ],
            "documentationUrl": "https://example.com/resource",
            "outputJsonSchema": {
              "example": "value"
            }
          }
        ],
        "totalCount": 1
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_MCPListToolsResponse"
    },
    {
      "id": "cookbook-integrations-tools-connections-custom-mcp-servers-04-request",
      "operationId": "mcpListTools",
      "operationKey": "conversations:mcpListTools",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Inspect the names before setting filters or approvals. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "servers": [
          {
            "serverId": "custom:firecrawl",
            "enabled": true
          }
        ]
      },
      "schemaName": "llm_v1_services_gateway_v1_MCPListToolsRequest"
    },
    {
      "id": "conversations-mcpCallTool-request",
      "operationId": "mcpCallTool",
      "operationKey": "conversations:mcpCallTool",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Call a tool discovered through mcpListTools; replace the server, tool name and arguments with that tool’s schema.",
      "payload": {
        "toolCall": {
          "id": "tool_call_123",
          "serverId": "custom:product-tools",
          "name": "lookup_booking",
          "argumentsJson": {
            "booking_id": "BK-123"
          }
        }
      },
      "schemaName": "llm_v1_services_gateway_v1_MCPCallToolRequest"
    },
    {
      "id": "conversations-mcpCallTool-response",
      "operationId": "mcpCallTool",
      "operationKey": "conversations:mcpCallTool",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "requestId": "example_123",
        "toolCall": {
          "id": "example_123",
          "name": "example",
          "argumentsJson": {
            "example": "value"
          },
          "status": "TOOL_EXECUTION_STATUS_PENDING",
          "resultJson": {
            "example": "value"
          },
          "executedAt": "2026-09-16T12:00:00Z",
          "serverId": "example_123",
          "isClientTool": true,
          "description": "example",
          "parametersJsonSchema": {
            "example": "value"
          },
          "requiresApprovalAt": "2026-09-16T12:00:00Z",
          "approvedAt": "2026-09-16T12:00:00Z",
          "approvedBy": "example",
          "executionDuration": "1s",
          "endReason": "example",
          "clientToolDeadlineAt": "2026-09-16T12:00:00Z"
        },
        "executionTimeMs": 1
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_MCPCallToolResponse"
    },
    {
      "id": "conversations-mcpListResources-request",
      "operationId": "mcpListResources",
      "operationKey": "conversations:mcpListResources",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative request shape; the current handler returns an empty result without fetching resources or prompts.",
      "payload": {
        "serverId": "custom:product-tools"
      },
      "schemaName": "llm_v1_services_gateway_v1_MCPListResourcesRequest"
    },
    {
      "id": "conversations-mcpListResources-response",
      "operationId": "mcpListResources",
      "operationKey": "conversations:mcpListResources",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "resources": [
          {
            "uri": "https://example.com/resource",
            "title": "example",
            "description": "example",
            "mimeType": "example",
            "content": [
              {
                "type": "CONTENT_PART_TYPE_TEXT",
                "content": "Example text",
                "cachePreferred": true
              }
            ],
            "annotations": {},
            "lastModified": "2026-09-16T12:00:00Z"
          }
        ],
        "totalCount": 1
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_MCPListResourcesResponse"
    },
    {
      "id": "conversations-mcpReadResource-request",
      "operationId": "mcpReadResource",
      "operationKey": "conversations:mcpReadResource",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative request shape; the current handler returns an empty result without fetching resources or prompts.",
      "payload": {
        "serverId": "custom:product-tools",
        "uri": "resource://bookings/BK-123"
      },
      "schemaName": "llm_v1_services_gateway_v1_MCPReadResourceRequest"
    },
    {
      "id": "conversations-mcpReadResource-response",
      "operationId": "mcpReadResource",
      "operationKey": "conversations:mcpReadResource",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "resource": {
          "uri": "https://example.com/resource",
          "title": "example",
          "description": "example",
          "mimeType": "example",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Example text",
              "cachePreferred": true
            }
          ],
          "annotations": {},
          "lastModified": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_MCPReadResourceResponse"
    },
    {
      "id": "conversations-mcpListPrompts-request",
      "operationId": "mcpListPrompts",
      "operationKey": "conversations:mcpListPrompts",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative request shape; the current handler returns an empty result without fetching resources or prompts.",
      "payload": {
        "serverId": "custom:product-tools"
      },
      "schemaName": "llm_v1_services_gateway_v1_MCPListPromptsRequest"
    },
    {
      "id": "conversations-mcpListPrompts-response",
      "operationId": "mcpListPrompts",
      "operationKey": "conversations:mcpListPrompts",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "prompts": [
          {
            "name": "example",
            "title": "example",
            "description": "example",
            "parameters": [
              {
                "name": "example",
                "description": "example",
                "type": "example",
                "required": true
              }
            ],
            "template": "example"
          }
        ],
        "totalCount": 1
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_MCPListPromptsResponse"
    },
    {
      "id": "conversations-mcpGetPrompt-request",
      "operationId": "mcpGetPrompt",
      "operationKey": "conversations:mcpGetPrompt",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative request shape; the current handler returns an empty result without fetching resources or prompts.",
      "payload": {
        "serverId": "custom:product-tools",
        "name": "travel-summary"
      },
      "schemaName": "llm_v1_services_gateway_v1_MCPGetPromptRequest"
    },
    {
      "id": "conversations-mcpGetPrompt-response",
      "operationId": "mcpGetPrompt",
      "operationKey": "conversations:mcpGetPrompt",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "prompt": {
          "name": "example",
          "title": "example",
          "description": "example",
          "parameters": [
            {
              "name": "example",
              "description": "example",
              "type": "example",
              "required": true
            }
          ],
          "template": "example"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_MCPGetPromptResponse"
    },
    {
      "id": "memory-search-request",
      "operationId": "searchMemories",
      "operationKey": "conversations:searchMemories",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Search dietary preferences",
      "payload": {
        "query": "dietary preferences",
        "topK": 10
      },
      "schemaName": "llm_v1_services_gateway_v1_SearchMemoriesRequest"
    },
    {
      "id": "memory-search-response",
      "operationId": "searchMemories",
      "operationKey": "conversations:searchMemories",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative dietary preferences returned",
      "payload": {
        "memories": [
          {
            "id": "mem_abc123",
            "memory": "User is vegetarian and avoids gluten",
            "score": 0.92,
            "createdAt": "2025-02-15T10:00:00Z",
            "updatedAt": "2025-02-15T10:00:00Z"
          },
          {
            "id": "mem_def456",
            "memory": "User prefers meals under 500 calories",
            "score": 0.85,
            "createdAt": "2025-02-20T14:30:00Z",
            "updatedAt": "2025-02-20T14:30:00Z"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_SearchMemoriesResponse"
    },
    {
      "id": "conversations-listMemories-request",
      "operationId": "listMemories",
      "operationKey": "conversations:listMemories",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "limit": 1
      },
      "schemaName": "llm_v1_services_gateway_v1_ListMemoriesRequest"
    },
    {
      "id": "conversations-listMemories-response",
      "operationId": "listMemories",
      "operationKey": "conversations:listMemories",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "memories": [
          {
            "id": "example_123",
            "memory": "example",
            "userId": "example_123",
            "agentId": "example_123",
            "appId": "example_123",
            "runId": "example_123",
            "metadata": {},
            "score": 1,
            "createdAt": "2026-09-16T12:00:00Z",
            "updatedAt": "2026-09-16T12:00:00Z"
          }
        ]
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_ListMemoriesResponse"
    },
    {
      "id": "cookbook-managed-agents-memory-knowledge-index-02-request",
      "operationId": "listMemories",
      "operationKey": "conversations:listMemories",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 2: Let the user review the stored records. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "limit": 100
      },
      "schemaName": "llm_v1_services_gateway_v1_ListMemoriesRequest"
    },
    {
      "id": "conversations-getMemory-request",
      "operationId": "getMemory",
      "operationKey": "conversations:getMemory",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "memoryId": "example_123"
      },
      "schemaName": "llm_v1_services_gateway_v1_GetMemoryRequest"
    },
    {
      "id": "conversations-getMemory-response",
      "operationId": "getMemory",
      "operationKey": "conversations:getMemory",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "memory": {
          "id": "example_123",
          "memory": "example",
          "userId": "example_123",
          "agentId": "example_123",
          "appId": "example_123",
          "runId": "example_123",
          "metadata": {},
          "score": 1,
          "createdAt": "2026-09-16T12:00:00Z",
          "updatedAt": "2026-09-16T12:00:00Z"
        }
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_GetMemoryResponse"
    },
    {
      "id": "cookbook-managed-agents-memory-knowledge-index-03-request",
      "operationId": "getMemory",
      "operationKey": "conversations:getMemory",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Inspect the selected record before changing it. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "memoryId": "mem_abc123"
      },
      "schemaName": "llm_v1_services_gateway_v1_GetMemoryRequest"
    },
    {
      "id": "conversations-updateMemory-request",
      "operationId": "updateMemory",
      "operationKey": "conversations:updateMemory",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "memoryId": "example_123",
        "text": "Example text"
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateMemoryRequest"
    },
    {
      "id": "conversations-updateMemory-response",
      "operationId": "updateMemory",
      "operationKey": "conversations:updateMemory",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {},
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_UpdateMemoryResponse"
    },
    {
      "id": "cookbook-managed-agents-memory-knowledge-index-04-request",
      "operationId": "updateMemory",
      "operationKey": "conversations:updateMemory",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Step 3: Correct an outdated preference. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "memoryId": "mem_abc123",
        "text": "User is vegetarian, avoids gluten, and prefers organic produce"
      },
      "schemaName": "llm_v1_services_gateway_v1_UpdateMemoryRequest"
    },
    {
      "id": "conversations-deleteMemory-request",
      "operationId": "deleteMemory",
      "operationKey": "conversations:deleteMemory",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Schema-valid request illustration; replace example identifiers and confirm operation prerequisites.",
      "payload": {
        "memoryId": "example_123"
      },
      "schemaName": "llm_v1_services_gateway_v1_DeleteMemoryRequest"
    },
    {
      "id": "conversations-deleteMemory-response",
      "operationId": "deleteMemory",
      "operationKey": "conversations:deleteMemory",
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative response shape; omitted default fields and actual outcomes depend on the operation.",
      "payload": {
        "success": true
      },
      "status": "200",
      "schemaName": "llm_v1_services_gateway_v1_DeleteMemoryResponse"
    },
    {
      "id": "cookbook-managed-agents-memory-knowledge-index-05-request",
      "operationId": "deleteMemory",
      "operationKey": "conversations:deleteMemory",
      "direction": "request",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Guide request for Remove the selected record. Replace example resource identifiers with your own authorized values.",
      "payload": {
        "memoryId": "mem_abc123"
      },
      "schemaName": "llm_v1_services_gateway_v1_DeleteMemoryRequest"
    },
    {
      "id": "event-llm-message-published",
      "eventKeys": [
        "API Event/9i3l70sln0"
      ],
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative payload, not a captured delivery. Identifiers, tool names and outcomes are examples; omitted fields depend on the event.",
      "payload": {
        "message": {
          "role": "ROLE_ASSISTANT",
          "content": [
            {
              "type": "CONTENT_PART_TYPE_TEXT",
              "content": "Here is your daily briefing."
            }
          ],
          "messageId": "924ad207-f757-4b1f-bf41-8344ce32dd01",
          "sequence": "2",
          "generatedBy": "9d4c2e1f-27b1-4304-ae54-af7fe876df31"
        }
      },
      "schemaName": "llm_v1_common_v1_LLMMessagePublishedEvent",
      "eventSchemaName": "llm_v1_common_v1_LLMMessagePublishedEvent"
    },
    {
      "id": "event-llm-generation-completed",
      "eventKeys": [
        "API Event/84ptg9ajvv"
      ],
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative payload, not a captured delivery. Identifiers, tool names and outcomes are examples; omitted fields depend on the event.",
      "payload": {
        "runId": "9d4c2e1f-27b1-4304-ae54-af7fe876df31",
        "status": "WORKFLOW_STATUS_COMPLETED",
        "loopCount": 1,
        "durationMs": "1250",
        "usage": {
          "promptTokens": 412,
          "completionTokens": 88,
          "totalTokens": 500
        }
      },
      "schemaName": "llm_v1_common_v1_LLMGenerationCompletedEvent",
      "eventSchemaName": "llm_v1_common_v1_LLMGenerationCompletedEvent"
    },
    {
      "id": "event-llm-generation-started",
      "eventKeys": [
        "API Event/84rgqjjrl0"
      ],
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative payload, not a captured delivery. Identifiers, tool names and outcomes are examples; omitted fields depend on the event.",
      "payload": {
        "runId": "9d4c2e1f-27b1-4304-ae54-af7fe876df31",
        "startingSequence": "1"
      },
      "schemaName": "llm_v1_common_v1_LLMGenerationStartedEvent",
      "eventSchemaName": "llm_v1_common_v1_LLMGenerationStartedEvent"
    },
    {
      "id": "event-llm-tool-call-started",
      "eventKeys": [
        "API Event/6vto7rka3s"
      ],
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative payload, not a captured delivery. Identifiers, tool names and outcomes are examples; omitted fields depend on the event.",
      "payload": {
        "toolCall": {
          "id": "call_123",
          "name": "send_briefing",
          "serverId": "briefing-tools",
          "argumentsJson": {
            "conversation_id": "b81d5345-c1f9-4fb9-b558-a6327c75b842"
          },
          "status": "TOOL_EXECUTION_STATUS_EXECUTING"
        }
      },
      "schemaName": "llm_v1_common_v1_ToolCallStartedEvent",
      "eventSchemaName": "llm_v1_common_v1_ToolCallStartedEvent"
    },
    {
      "id": "event-llm-tool-call-approval-required",
      "eventKeys": [
        "API Event/6vto7rka3s"
      ],
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative payload, not a captured delivery. Identifiers, tool names and outcomes are examples; omitted fields depend on the event.",
      "payload": {
        "toolCall": {
          "id": "call_123",
          "name": "send_briefing",
          "serverId": "briefing-tools",
          "argumentsJson": {
            "conversation_id": "b81d5345-c1f9-4fb9-b558-a6327c75b842"
          },
          "status": "TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION",
          "requiresApprovalAt": "2026-09-16T12:05:00Z"
        }
      },
      "schemaName": "llm_v1_common_v1_ToolCallStartedEvent",
      "eventSchemaName": "llm_v1_common_v1_ToolCallStartedEvent"
    },
    {
      "id": "event-llm-tool-call-completed",
      "eventKeys": [
        "API Event/6vrs2kmfd4"
      ],
      "direction": "response",
      "mediaType": "application/json",
      "revision": "aju17f20mq",
      "summary": "Illustrative payload, not a captured delivery. Identifiers, tool names and outcomes are examples; omitted fields depend on the event.",
      "payload": {
        "executionTimeMs": 240,
        "toolCall": {
          "id": "call_123",
          "name": "send_briefing",
          "serverId": "briefing-tools",
          "argumentsJson": {
            "conversation_id": "b81d5345-c1f9-4fb9-b558-a6327c75b842"
          },
          "status": "TOOL_EXECUTION_STATUS_COMPLETED",
          "resultJson": {
            "accepted": true
          }
        }
      },
      "schemaName": "llm_v1_common_v1_ToolCallCompletedEvent",
      "eventSchemaName": "llm_v1_common_v1_ToolCallCompletedEvent"
    }
  ]
}
