{
  "openapi": "3.1.0",
  "info": {
    "title": "OneHazel API",
    "version": "2.0.0",
    "summary": "Every public operator, platform partner and supplier endpoint of the OneHazel platform.",
    "description": "Generated from the route inventory of the OneHazel Edge Functions. Every path is relative to `https://api.onehazel.com`; the first path segment is the function that serves it. Responses use a `{ \"success\": true, \"data\": ... }` envelope unless an operation says otherwise; errors use `{ \"success\": false, \"error\": { \"code\", \"message\" } }`.",
    "contact": {
      "name": "OneHazel Support",
      "url": "https://onehazel.com"
    },
    "license": {
      "name": "Proprietary",
      "identifier": "LicenseRef-OneHazel-Proprietary"
    }
  },
  "servers": [
    {
      "url": "https://api.onehazel.com",
      "description": "Production"
    }
  ],
  "tags": [
    {
      "name": "Health and discovery",
      "description": "Liveness checks and machine-readable descriptions of the API."
    },
    {
      "name": "Account",
      "description": "The calling operator account, its settings and its usage."
    },
    {
      "name": "Team",
      "description": "Members and invitations for a multi-user operator account."
    },
    {
      "name": "API keys",
      "description": "Create, list, rename and revoke operator API keys."
    },
    {
      "name": "Onboarding",
      "description": "Guided setup state and the casino connection marker."
    },
    {
      "name": "Connectors",
      "description": "The connector catalogue, connector versions, private builds and subscriptions."
    },
    {
      "name": "Connections",
      "description": "Credentialed instances of a connector owned by an operator."
    },
    {
      "name": "Gateway",
      "description": "Execute connector operations through the OneHazel gateway."
    },
    {
      "name": "Webhooks",
      "description": "Outbound webhook subscriptions, deliveries and replay, plus inbound workflow webhooks."
    },
    {
      "name": "Events",
      "description": "The operator event stream."
    },
    {
      "name": "Workflows",
      "description": "Build, version, run and approve workflows."
    },
    {
      "name": "Jobs",
      "description": "Background jobs and their status."
    },
    {
      "name": "AI integration",
      "description": "Requests that ask OneHazel to integrate an API on your behalf, and the assistant that answers their questions."
    },
    {
      "name": "AI",
      "description": "AI completions used by OneHazel features, billed to the calling operator."
    },
    {
      "name": "MCP",
      "description": "The Model Context Protocol server, its prompts and its activity log."
    },
    {
      "name": "Billing",
      "description": "Checkout and the billing portal."
    },
    {
      "name": "Feature requests",
      "description": "Submit and vote on feature requests."
    },
    {
      "name": "Data ingestion",
      "description": "Push entities, events and states into OneHazel."
    },
    {
      "name": "Analytics",
      "description": "Read KPIs and per-entity analytics, and ask questions of your data."
    },
    {
      "name": "Affiliate tag",
      "description": "Endpoints called by the browser affiliate tag."
    },
    {
      "name": "Platform partners",
      "description": "Manage operators, catalogue visibility and metrics as a platform partner."
    },
    {
      "name": "Suppliers",
      "description": "Manage your connectors, adoption and promotions as a supplier."
    }
  ],
  "paths": {
    "/ai-proxy": {
      "post": {
        "operationId": "postAiProxy",
        "summary": "Create an AI completion",
        "description": "Returns an OpenAI-compatible chat completion. Usage counts toward the operator AI allowance.",
        "tags": [
          "AI"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/ai-proxy/health": {
      "get": {
        "operationId": "getAiProxyHealth",
        "summary": "Check AI service health",
        "tags": [
          "AI"
        ],
        "security": [],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/compliance/kyc": {
      "get": {
        "operationId": "getAnalyticsApiAnalyticsComplianceKyc",
        "summary": "Get KYC compliance summary",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/entities/{externalId}": {
      "get": {
        "operationId": "getAnalyticsApiAnalyticsEntitiesByExternalId",
        "summary": "Get an entity",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/entities/{externalId}/events": {
      "get": {
        "operationId": "getAnalyticsApiAnalyticsEntitiesByExternalIdEvents",
        "summary": "List events for an entity",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/entities/{externalId}/state/{key}": {
      "get": {
        "operationId": "getAnalyticsApiAnalyticsEntitiesByExternalIdStateByKey",
        "summary": "Get one state of an entity",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/games": {
      "get": {
        "operationId": "getAnalyticsApiAnalyticsGames",
        "summary": "Get game performance",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/kpis": {
      "get": {
        "operationId": "getAnalyticsApiAnalyticsKpis",
        "summary": "Get KPIs",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/players": {
      "get": {
        "operationId": "getAnalyticsApiAnalyticsPlayers",
        "summary": "List players",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "entity_type",
            "in": "query",
            "required": true,
            "description": "Entity type to list.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/players/{playerId}": {
      "get": {
        "operationId": "getAnalyticsApiAnalyticsPlayersByPlayerId",
        "summary": "Get a player",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "playerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/providers": {
      "get": {
        "operationId": "getAnalyticsApiAnalyticsProviders",
        "summary": "Get provider statistics",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/refresh": {
      "post": {
        "operationId": "postAnalyticsApiAnalyticsRefresh",
        "summary": "Refresh analytics views",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-api/analytics/revenue": {
      "get": {
        "operationId": "getAnalyticsApiAnalyticsRevenue",
        "summary": "Get revenue",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/analytics-copilot/copilot/chat": {
      "post": {
        "operationId": "postAnalyticsCopilotCopilotChat",
        "summary": "Ask a question about your data (switched off)",
        "description": "Switched off. Every request returns `410` with code `COPILOT_DISABLED`. This endpoint is being removed.",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "deprecated": true
      }
    },
    "/analytics-copilot/copilot/insights": {
      "get": {
        "operationId": "getAnalyticsCopilotCopilotInsights",
        "summary": "Get suggested insights (switched off)",
        "description": "Switched off. Every request returns `410` with code `COPILOT_DISABLED`. This endpoint is being removed.",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "deprecated": true
      }
    },
    "/api-keys": {
      "delete": {
        "operationId": "revokeApiKeyStandalone",
        "summary": "Revoke an API key",
        "description": "The last active key cannot be revoked.",
        "tags": [
          "API keys"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "The API key id.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hard",
            "in": "query",
            "required": false,
            "description": "Delete instead of revoke.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "listApiKeysStandalone",
        "summary": "List API keys",
        "tags": [
          "API keys"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "renameApiKeyStandalone",
        "summary": "Rename an API key",
        "description": "The key id is sent in the body as `id`.",
        "tags": [
          "API keys"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "createApiKeyStandalone",
        "summary": "Create an API key (standalone)",
        "description": "The plaintext key is returned once, in this response only.",
        "tags": [
          "API keys"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/gateway": {
      "post": {
        "operationId": "callConnectorOperation",
        "summary": "Call a connector operation (standalone gateway)",
        "description": "Resolves the operation against the connector specification, injects the connection credentials and proxies the call.",
        "tags": [
          "Gateway"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/integration-concierge": {
      "post": {
        "operationId": "postIntegrationConcierge",
        "summary": "Ask the integration assistant",
        "description": "Helps answer one open question on an integration request.",
        "tags": [
          "AI integration"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/mcp-server": {
      "post": {
        "operationId": "postMcpServer",
        "summary": "Send an MCP JSON-RPC request",
        "description": "The canonical MCP endpoint. The operator is taken from the API key.",
        "tags": [
          "MCP"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/mcp-server/{operatorId}": {
      "post": {
        "operationId": "postMcpServerByOperatorId",
        "summary": "Send an MCP JSON-RPC request (per-operator URL)",
        "description": "Legacy form. The operator id in the path must match the API key.",
        "tags": [
          "MCP"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "deprecated": true
      }
    },
    "/mcp-server/{operatorId}/events": {
      "get": {
        "operationId": "getMcpServerByOperatorIdEvents",
        "summary": "Open the MCP event stream (per-operator URL)",
        "tags": [
          "MCP"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "required": true,
            "description": "Session id, matched against the `Mcp-Session-Id` header on requests.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Server-sent event stream.",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "deprecated": true
      }
    },
    "/mcp-server/events": {
      "get": {
        "operationId": "getMcpServerEvents",
        "summary": "Open the MCP event stream",
        "tags": [
          "MCP"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "session",
            "in": "query",
            "required": true,
            "description": "Session id, matched against the `Mcp-Session-Id` header on requests.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Server-sent event stream.",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/api-keys": {
      "post": {
        "operationId": "postApiKeys",
        "summary": "Create an API key",
        "description": "The plaintext key is returned once, in this response only.",
        "tags": [
          "API keys"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/approvals/{token}": {
      "get": {
        "operationId": "getApprovalsByToken",
        "summary": "Open an approval link",
        "description": "The page behind an emailed approval link. Authorised by the token in the path.",
        "tags": [
          "Workflows"
        ],
        "security": [],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "HTML page.",
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postApprovalsByToken",
        "summary": "Submit a decision from an approval link",
        "tags": [
          "Workflows"
        ],
        "security": [],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connections": {
      "get": {
        "operationId": "getConnections",
        "summary": "List connections",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postConnections",
        "summary": "Create a connection",
        "description": "Credentials are encrypted at rest. Identical credentials for the same connector are rejected unless `upsert=true`.",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "upsert",
            "in": "query",
            "required": false,
            "description": "Update the existing identical connection instead of returning 409.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connections/{connectionId}": {
      "delete": {
        "operationId": "deleteConnectionsByConnectionId",
        "summary": "Delete a connection",
        "description": "Rejected with 409 while an active workflow uses the connection.",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "getConnectionsByConnectionId",
        "summary": "Get a connection",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "patchConnectionsByConnectionId",
        "summary": "Update a connection",
        "description": "Fields in `config` are merged into the stored configuration. List keys to remove in `config_delete`. Changing `auth_method` together with new config replaces the configuration.",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connections/{connectionId}/clone": {
      "post": {
        "operationId": "postConnectionsByConnectionIdClone",
        "summary": "Clone a connection",
        "description": "The clone starts inactive.",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connections/{connectionId}/config-keys": {
      "get": {
        "operationId": "getConnectionsByConnectionIdConfigKeys",
        "summary": "List stored configuration keys",
        "description": "Returns key names only, never values.",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connections/{connectionId}/credentials": {
      "put": {
        "operationId": "putConnectionsByConnectionIdCredentials",
        "summary": "Rotate connection credentials",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connections/{connectionId}/pin": {
      "delete": {
        "operationId": "deleteConnectionsByConnectionIdPin",
        "summary": "Unpin a connection",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "patchConnectionsByConnectionIdPin",
        "summary": "Pin a connection to a connector version",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connections/{connectionId}/restore": {
      "post": {
        "operationId": "postConnectionsByConnectionIdRestore",
        "summary": "Restore a deleted connection",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connections/trash": {
      "get": {
        "operationId": "getConnectionsTrash",
        "summary": "List deleted connections that can be restored",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connectors": {
      "get": {
        "operationId": "getConnectors",
        "summary": "List connectors",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "trust",
            "in": "query",
            "required": false,
            "description": "Comma-separated trust tiers to filter by.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "outcomes",
            "in": "query",
            "required": false,
            "description": "Comma-separated outcome slugs to filter by.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connectors/{connectorId}": {
      "get": {
        "operationId": "getConnectorsByConnectorId",
        "summary": "Get a connector",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connectors/{connectorKey}/versions": {
      "get": {
        "operationId": "getConnectorsByConnectorKeyVersions",
        "summary": "List versions of a connector",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectorKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connectors/{connectorKey}/versions/{versionId}": {
      "get": {
        "operationId": "getConnectorsByConnectorKeyVersionsByVersionId",
        "summary": "Get a connector version",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectorKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/connectors/build": {
      "post": {
        "operationId": "postConnectorsBuild",
        "summary": "Build a private connector",
        "description": "Queues a build from an API documentation or specification URL. When a close match already exists the response asks you to confirm reuse or force a new build.",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/events": {
      "get": {
        "operationId": "getEvents",
        "summary": "List events",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/feature-flags": {
      "get": {
        "operationId": "getFeatureFlags",
        "summary": "List feature flags",
        "description": "Site, page and feature flags the client uses to show maintenance banners and gate features.",
        "tags": [
          "Health and discovery"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/gateway/batch": {
      "post": {
        "operationId": "postGatewayBatch",
        "summary": "Execute a batch of connector operations",
        "tags": [
          "Gateway"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/gateway/execute": {
      "post": {
        "operationId": "postGatewayExecute",
        "summary": "Execute a connector operation",
        "tags": [
          "Gateway"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/gateway/test": {
      "post": {
        "operationId": "postGatewayTest",
        "summary": "Test a connector operation",
        "tags": [
          "Gateway"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/health": {
      "get": {
        "operationId": "getHealth",
        "summary": "Check API health",
        "tags": [
          "Health and discovery"
        ],
        "security": [],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/invites/accept": {
      "post": {
        "operationId": "postInvitesAccept",
        "summary": "Accept an invitation",
        "description": "Creates the invited member login. Authorised by the invitation token in the body.",
        "tags": [
          "Team"
        ],
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/invites/lookup": {
      "get": {
        "operationId": "getInvitesLookup",
        "summary": "Look up an invitation by token",
        "tags": [
          "Team"
        ],
        "security": [],
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "description": "The invitation token from the invite email.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/jobs": {
      "get": {
        "operationId": "getJobs",
        "summary": "List jobs",
        "tags": [
          "Jobs"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postJobs",
        "summary": "Create a job",
        "tags": [
          "Jobs"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/jobs/{jobId}": {
      "get": {
        "operationId": "getJobsByJobId",
        "summary": "Get a job",
        "tags": [
          "Jobs"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/logs/{connectionId}": {
      "get": {
        "operationId": "getLogsByConnectionId",
        "summary": "List gateway logs for a connection",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/monitoring/metrics": {
      "get": {
        "operationId": "getMonitoringMetrics",
        "summary": "Get monitoring metrics",
        "tags": [
          "Jobs"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/openapi.json": {
      "get": {
        "operationId": "getOpenapiJson",
        "summary": "Redirect to the OpenAPI document (JSON)",
        "tags": [
          "Health and discovery"
        ],
        "security": [],
        "responses": {
          "302": {
            "description": "Redirect to the published document.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/openapi.yaml": {
      "get": {
        "operationId": "getOpenapiYaml",
        "summary": "Redirect to the OpenAPI document",
        "tags": [
          "Health and discovery"
        ],
        "security": [],
        "responses": {
          "302": {
            "description": "Redirect to the published document.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me": {
      "delete": {
        "operationId": "deleteOperatorsMe",
        "summary": "Delete the calling operator account",
        "description": "Erases the operator account and its data (right to erasure).",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "getOperatorsMe",
        "summary": "Get the calling operator profile",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/ai-usage": {
      "get": {
        "operationId": "getOperatorsMeAiUsage",
        "summary": "Get AI usage",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "required": false,
            "description": "Look-back window in days.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/approvals": {
      "get": {
        "operationId": "getOperatorsMeApprovals",
        "summary": "List pending approvals",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/approvals/{waitId}": {
      "get": {
        "operationId": "getOperatorsMeApprovalsByWaitId",
        "summary": "Get an approval request",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "waitId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/audit-log": {
      "get": {
        "operationId": "getOperatorsMeAuditLog",
        "summary": "List audit log entries",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/billing/checkout": {
      "post": {
        "operationId": "postOperatorsMeBillingCheckout",
        "summary": "Start a checkout session",
        "tags": [
          "Billing"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/billing/portal": {
      "post": {
        "operationId": "postOperatorsMeBillingPortal",
        "summary": "Open the billing portal",
        "tags": [
          "Billing"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/build-history": {
      "get": {
        "operationId": "getOperatorsMeBuildHistory",
        "summary": "List connector build history",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/casino-connection": {
      "delete": {
        "operationId": "deleteOperatorsMeCasinoConnection",
        "summary": "Clear the casino connection marker",
        "description": "Clears the connected marker only. Keys and data are kept.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "getOperatorsMeCasinoConnection",
        "summary": "Get casino connection status",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postOperatorsMeCasinoConnection",
        "summary": "Mark the casino as connected",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/conformance": {
      "post": {
        "operationId": "postOperatorsMeConnectConformance",
        "summary": "Run conformance for a connect module",
        "description": "Queues a conformance run against the endpoint registered for one module (wallet, player, webhook.receive or payments.intent). Body: `{ \"module\": \"wallet\" }`. Returns the run id; read the verdict and per-scenario evidence from GET /operators/me/connect/conformance/{runId}. At most 10 runs per operator per hour. A module with no registered endpoint returns CONNECT_MODULE_NOT_REGISTERED.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/conformance/{runId}": {
      "get": {
        "operationId": "getOperatorsMeConnectConformanceByRunId",
        "summary": "Get a conformance run",
        "description": "Status, verdict and per-scenario request and response evidence for one of your conformance runs, with secrets masked. A run that has not finished reports its verdict as not yet verified.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/endpoints": {
      "post": {
        "operationId": "postOperatorsMeConnectEndpoints",
        "summary": "Register a connect module endpoint",
        "description": "Registers the public https base URL OneHazel calls for one Operator Contract v1 module (wallet, player, webhook.receive or payments.intent). A first registration returns the signing secret and the callback key; both are shown once. Registering a module that already exists keeps its signing secret and callback key: only the base URLs, `testPlayerId`, `restrictedPlayerId` and `testGame` change, the response carries `secretUnchanged: true` and no `secret`, and the audit log records `connect.endpoint.updated`. So an address or test-game fix needs no adapter restart; rotation is `POST .../endpoints/{module}/rotate`. A `callbackKey` that differs from the stored one replaces it and keeps the previous key valid for one hour (`callbackKeyRotated`, `previousCallbackKeyValidUntil` and `notice` in the response); it never mints a signing secret. For `player`, also send `testPlayerId` and `restrictedPlayerId` (a test player with an active restriction, at most 128 characters); a player conformance run cannot reach a verdict without both, and registering again without them clears them. For `wallet`, also send `testPlayerId` and `testGame: { provider_slug, game_code }`, one active game in your own catalogue that may be used for test rounds, as your PAM knows it; conformance and connect_simulate start every test session with it, and a wallet registration without it is refused with 400 VALIDATION_ERROR.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/endpoints/{module}": {
      "delete": {
        "operationId": "deleteOperatorsMeConnectEndpointsByModule",
        "summary": "Unregister a connect module endpoint",
        "description": "Removes the registered base URL, signing secret and callback key for one module (wallet, player, webhook.receive or payments.intent). Conformance run history is kept and the module reads not_started until it is registered again. Refused with 409 CONNECT_MODULE_IN_USE while an active connection requires the module; nothing is removed.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/endpoints/{module}/rotate": {
      "post": {
        "operationId": "postOperatorsMeConnectEndpointsByModuleRotate",
        "summary": "Rotate a connect module signing secret and callback key",
        "description": "Rotates the signing secret, the callback key, or both for a registered module. Optional JSON body `{ \"what\": \"signing_secret\" | \"callback_key\" | \"both\" }`, default `both` (an empty body means both). Each new value is shown once, with a `save_as` block naming the adapter and sample environment variables to write it to. The previous value of each rotated one stays accepted for one hour: OneHazel retries a call your endpoint refuses with 401 once with the previous values, so you can update the adapter after the call. A rotated callback key is minted by OneHazel; to use your own, register again with `callbackKey`. An unknown `what` answers 400 VALIDATION_ERROR and changes nothing.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "module",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/marketplace": {
      "get": {
        "operationId": "getOperatorsMeConnectMarketplace",
        "summary": "List marketplace connectors with missing modules",
        "description": "Public marketplace connectors, each with the Operator Contract v1 modules it requires and which of those this operator has not yet made conformant. requirements_unknown is true when a connector has not declared its modules; that is not the same as ready.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Only connectors in this category.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "outcome",
            "in": "query",
            "required": false,
            "description": "Only connectors tagged with this outcome slug.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/marketplace/{key}/activate": {
      "post": {
        "operationId": "postOperatorsMeConnectMarketplaceByKeyActivate",
        "summary": "Activate a marketplace connector (inactive)",
        "description": "Creates an inactive connection for the connector when every required module is conformant, through the same path as creating a connection in the app. When modules are missing nothing is created and the list is returned. Calling it again returns the existing connection. Going live stays a separate click in the app.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/marketplace/{key}/credentials": {
      "put": {
        "operationId": "putOperatorsMeConnectMarketplaceByKeyCredentials",
        "summary": "Set vendor credentials on an inactive connection",
        "description": "Sets the vendor credential fields of a marketplace connector on your inactive connection for it (create it first with the activate route). Body: `{ \"credentials\": { \"<field>\": \"<value>\" }, \"partial\": false }`. Field names are the `vendorCredentials` of the requirements route; an unknown name answers 400 with the allowed names, and every required field must be present after the write unless `partial` is true. Values are stored encrypted and never returned: the response lists the field names set, the required names still missing and the connection status. An active connection answers 409; change a live connector's credentials on its connection page in the app.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/marketplace/{key}/request-go-live": {
      "post": {
        "operationId": "postOperatorsMeConnectMarketplaceByKeyRequestGoLive",
        "summary": "Request a go-live review for a connector",
        "description": "Notifies the operator team about an activated connector and returns the review URL. The response carries `ready` and `missing`. `missing` lists each required module that is not conformant and each vendor credential the connection does not hold yet, as `credential:<field>`. When anything is missing it still notifies, but `ready` is false and the notification says the connection needs values. It never changes a connection status.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/marketplace/{key}/requirements": {
      "get": {
        "operationId": "getOperatorsMeConnectMarketplaceByKeyRequirements",
        "summary": "Get what activating a connector needs",
        "description": "Missing modules, widget snippets and the credential fields the operator must obtain from the vendor for one marketplace connector. `requiredInputs` lists, per missing module, the endpoint registration fields still unset (wallet: `testGame`; player: `testPlayerId`, `restrictedPlayerId`).",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/simulate": {
      "post": {
        "operationId": "postOperatorsMeConnectSimulate",
        "summary": "Simulate a round against your wallet endpoint",
        "description": "OneHazel plays a game studio through one round against your registered wallet endpoint, signed and sent with `X-OneHazel-Env: test` to your test player. Body: `{ \"scenario\": \"round\" | \"rollback\" | \"freeround\" }`. Returns each step with its HTTP status and the balance after it, plus an overall `ok`. Simulated money is never billed. At most 10 runs per operator per hour. Returns `CONNECT_MODULE_NOT_REGISTERED` (409) when no wallet endpoint with a test player is registered.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connect/status": {
      "get": {
        "operationId": "getOperatorsMeConnectStatus",
        "summary": "Get Operator Contract v1 module status",
        "description": "Per-module state for the Integrate with AI door, plus inactive connections ready for go-live review, and a journey block (goal, current_stage, next_step, remaining_steps, blocked_on) computed from current state alone. The same implementation serves the connect_status MCP tool.",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "key",
            "in": "query",
            "required": false,
            "description": "Optional marketplace connector key; the journey then plans to that connector going live.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/connectors/{blueprintId}/dump": {
      "get": {
        "operationId": "getOperatorsMeConnectorsByBlueprintIdDump",
        "summary": "Export a connector artefact",
        "description": "Returns the connector definition and its active version, for connectors you own, subscribe to, or that are public.",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "blueprintId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/export": {
      "get": {
        "operationId": "getOperatorsMeExport",
        "summary": "Export the calling operator data",
        "description": "Returns a portable export of the operator account data (right of access).",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/integration-requests": {
      "get": {
        "operationId": "getOperatorsMeIntegrationRequests",
        "summary": "List integration requests",
        "tags": [
          "AI integration"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postOperatorsMeIntegrationRequests",
        "summary": "Create an integration request",
        "tags": [
          "AI integration"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/integration-requests/{requestId}": {
      "get": {
        "operationId": "getOperatorsMeIntegrationRequestsByRequestId",
        "summary": "Get an integration request",
        "tags": [
          "AI integration"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/integration-requests/{requestId}/approve": {
      "post": {
        "operationId": "postOperatorsMeIntegrationRequestsByRequestIdApprove",
        "summary": "Approve an integration and go live",
        "tags": [
          "AI integration"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/integration-requests/{requestId}/cancel": {
      "post": {
        "operationId": "postOperatorsMeIntegrationRequestsByRequestIdCancel",
        "summary": "Cancel an integration request",
        "tags": [
          "AI integration"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/integration-requests/{requestId}/questions/{questionId}/answer": {
      "post": {
        "operationId": "postOperatorsMeIntegrationRequestsByRequestIdQuestionsByQuestionIdAnswer",
        "summary": "Answer a question on an integration request",
        "tags": [
          "AI integration"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "questionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/integration-requests/{requestId}/request-changes": {
      "post": {
        "operationId": "postOperatorsMeIntegrationRequestsByRequestIdRequestChanges",
        "summary": "Request changes to an integration",
        "tags": [
          "AI integration"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/invites": {
      "get": {
        "operationId": "getOperatorsMeInvites",
        "summary": "List pending invitations",
        "tags": [
          "Team"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postOperatorsMeInvites",
        "summary": "Invite a team member",
        "tags": [
          "Team"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/invites/{inviteId}": {
      "delete": {
        "operationId": "deleteOperatorsMeInvitesByInviteId",
        "summary": "Revoke an invitation",
        "tags": [
          "Team"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "inviteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/invites/{inviteId}/resend": {
      "post": {
        "operationId": "postOperatorsMeInvitesByInviteIdResend",
        "summary": "Resend an invitation",
        "tags": [
          "Team"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "inviteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/mcp-activity": {
      "get": {
        "operationId": "getOperatorsMeMcpActivity",
        "summary": "List MCP activity",
        "tags": [
          "MCP"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/mcp-prompts": {
      "get": {
        "operationId": "getOperatorsMeMcpPrompts",
        "summary": "List MCP prompts",
        "tags": [
          "MCP"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postOperatorsMeMcpPrompts",
        "summary": "Create an MCP prompt",
        "tags": [
          "MCP"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/mcp-prompts/{promptId}": {
      "delete": {
        "operationId": "deleteOperatorsMeMcpPromptsByPromptId",
        "summary": "Delete an MCP prompt",
        "tags": [
          "MCP"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "promptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putOperatorsMeMcpPromptsByPromptId",
        "summary": "Update an MCP prompt",
        "tags": [
          "MCP"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "promptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/members": {
      "get": {
        "operationId": "getOperatorsMeMembers",
        "summary": "List team members",
        "tags": [
          "Team"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/members/{memberId}": {
      "delete": {
        "operationId": "deleteOperatorsMeMembersByMemberId",
        "summary": "Remove a team member",
        "tags": [
          "Team"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "memberId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "patchOperatorsMeMembersByMemberId",
        "summary": "Update a team member",
        "description": "Change a member role or status.",
        "tags": [
          "Team"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "memberId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/onboarding": {
      "get": {
        "operationId": "getOperatorsMeOnboarding",
        "summary": "Get onboarding state",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putOperatorsMeOnboarding",
        "summary": "Update onboarding state",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/onboarding/verify": {
      "post": {
        "operationId": "postOperatorsMeOnboardingVerify",
        "summary": "Run onboarding verification checks",
        "tags": [
          "Onboarding"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/picker-favorites": {
      "get": {
        "operationId": "getOperatorsMePickerFavorites",
        "summary": "List picker favourites",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postOperatorsMePickerFavorites",
        "summary": "Save picker favourites",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/quota": {
      "get": {
        "operationId": "getOperatorsMeQuota",
        "summary": "Get quota limits and consumption",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/settings/analytics": {
      "get": {
        "operationId": "getOperatorsMeSettingsAnalytics",
        "summary": "Get analytics settings",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putOperatorsMeSettingsAnalytics",
        "summary": "Update analytics settings",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/settings/analytics/wipe": {
      "post": {
        "operationId": "postOperatorsMeSettingsAnalyticsWipe",
        "summary": "Wipe analytics data",
        "description": "Deletes the analytics data held for the calling operator. Ingestion is not affected.",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/settings/notifications": {
      "get": {
        "operationId": "getOperatorsMeSettingsNotifications",
        "summary": "Get notification preferences",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putOperatorsMeSettingsNotifications",
        "summary": "Update notification preferences",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/settings/template": {
      "get": {
        "operationId": "getOperatorsMeSettingsTemplate",
        "summary": "Get the data template",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putOperatorsMeSettingsTemplate",
        "summary": "Set the data template (once, when unset)",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/subscriptions": {
      "get": {
        "operationId": "getOperatorsMeSubscriptions",
        "summary": "List connector subscriptions",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postOperatorsMeSubscriptions",
        "summary": "Subscribe to a connector",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/subscriptions/{subscriptionId}": {
      "delete": {
        "operationId": "deleteOperatorsMeSubscriptionsBySubscriptionId",
        "summary": "Unsubscribe from a connector",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/subscriptions/{subscriptionId}/rebuild": {
      "post": {
        "operationId": "postOperatorsMeSubscriptionsBySubscriptionIdRebuild",
        "summary": "Rebuild a subscribed connector",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/subscriptions/{subscriptionId}/request-update": {
      "post": {
        "operationId": "postOperatorsMeSubscriptionsBySubscriptionIdRequestUpdate",
        "summary": "Request an update to a subscribed connector",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/subscriptions/{subscriptionId}/restore": {
      "post": {
        "operationId": "postOperatorsMeSubscriptionsBySubscriptionIdRestore",
        "summary": "Restore a removed subscription",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/subscriptions/{subscriptionId}/upgrade": {
      "post": {
        "operationId": "postOperatorsMeSubscriptionsBySubscriptionIdUpgrade",
        "summary": "Upgrade a subscription to the latest version",
        "tags": [
          "Connectors"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/usage": {
      "get": {
        "operationId": "getOperatorsMeUsage",
        "summary": "Get usage for the current period",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/operators/me/usage-banner-dismissals": {
      "get": {
        "operationId": "getOperatorsMeUsageBannerDismissals",
        "summary": "List dismissed usage banners",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postOperatorsMeUsageBannerDismissals",
        "summary": "Dismiss a usage banner",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/public/connectors": {
      "get": {
        "operationId": "getPublicConnectors",
        "summary": "List public catalogue connectors",
        "description": "Unauthenticated list of the public connector catalogue (key, name, category, domain). Rate limited per client IP.",
        "tags": [
          "Health and discovery"
        ],
        "security": [],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/resources/{resourceType}/{resourceId}/dependencies": {
      "get": {
        "operationId": "getResourcesByResourceTypeByResourceIdDependencies",
        "summary": "List what depends on a resource",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "resourceType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/roadmap": {
      "get": {
        "operationId": "getRoadmap",
        "summary": "List feature requests",
        "tags": [
          "Feature requests"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postRoadmap",
        "summary": "Submit a feature request",
        "tags": [
          "Feature requests"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/roadmap/{requestId}/vote": {
      "post": {
        "operationId": "postRoadmapByRequestIdVote",
        "summary": "Vote for a feature request",
        "tags": [
          "Feature requests"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/users/me": {
      "get": {
        "operationId": "getUsersMe",
        "summary": "Get the signed-in user profile",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/users/register": {
      "post": {
        "operationId": "postUsersRegister",
        "summary": "Complete registration for the signed-in user",
        "description": "Creates the operator account and profile for a newly verified user.",
        "tags": [
          "Account"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/webhooks": {
      "get": {
        "operationId": "getWebhooks",
        "summary": "List webhook subscriptions",
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postWebhooks",
        "summary": "Create a webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/webhooks/{webhookId}": {
      "delete": {
        "operationId": "deleteWebhooksByWebhookId",
        "summary": "Delete a webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "patchWebhooksByWebhookId",
        "summary": "Update a webhook subscription",
        "description": "Includes the per-subscription retry policy.",
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/webhooks/{webhookId}/deliveries": {
      "get": {
        "operationId": "getWebhooksByWebhookIdDeliveries",
        "summary": "List webhook deliveries",
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/webhooks/{webhookId}/replay": {
      "post": {
        "operationId": "postWebhooksByWebhookIdReplay",
        "summary": "Replay webhook deliveries",
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/workflow-templates": {
      "get": {
        "operationId": "getWorkflowTemplates",
        "summary": "List workflow templates",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/workflows": {
      "get": {
        "operationId": "getWorkflows",
        "summary": "List workflows",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postWorkflows",
        "summary": "Create a workflow",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/workflows/{workflowId}": {
      "delete": {
        "operationId": "deleteWorkflowsByWorkflowId",
        "summary": "Delete a workflow",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "workflowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "getWorkflowsByWorkflowId",
        "summary": "Get a workflow",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "workflowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putWorkflowsByWorkflowId",
        "summary": "Update a workflow",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "workflowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/workflows/{workflowId}/clone": {
      "post": {
        "operationId": "postWorkflowsByWorkflowIdClone",
        "summary": "Clone a workflow",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "workflowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/workflows/{workflowId}/executions": {
      "get": {
        "operationId": "getWorkflowsByWorkflowIdExecutions",
        "summary": "List workflow executions",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "workflowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/workflows/{workflowId}/executions/{executionId}/resume": {
      "post": {
        "operationId": "postWorkflowsByWorkflowIdExecutionsByExecutionIdResume",
        "summary": "Resume a paused execution",
        "description": "Approves or rejects a workflow waiting for a decision.",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "workflowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "executionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/workflows/{workflowId}/executions/{executionId}/steps": {
      "get": {
        "operationId": "getWorkflowsByWorkflowIdExecutionsByExecutionIdSteps",
        "summary": "List the steps of an execution",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "workflowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "executionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/workflows/{workflowId}/versions": {
      "get": {
        "operationId": "getWorkflowsByWorkflowIdVersions",
        "summary": "List workflow versions",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "workflowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/workflows/{workflowId}/versions/{versionId}": {
      "get": {
        "operationId": "getWorkflowsByWorkflowIdVersionsByVersionId",
        "summary": "Get a workflow version",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "workflowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/onehazel-api/workflows/check-mcp-tool-name": {
      "get": {
        "operationId": "getWorkflowsCheckMcpToolName",
        "summary": "Check an MCP tool name is available",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": true,
            "description": "Proposed tool name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "exclude",
            "in": "query",
            "required": false,
            "description": "Workflow id to ignore, so a workflow can keep its own name.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/batch/entities": {
      "post": {
        "operationId": "postOperatorDataApiBatchEntities",
        "summary": "Upsert entities in bulk",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/batch/events": {
      "post": {
        "operationId": "postOperatorDataApiBatchEvents",
        "summary": "Record events in bulk",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/batch/jobs/{jobId}": {
      "get": {
        "operationId": "getOperatorDataApiBatchJobsByJobId",
        "summary": "Get a batch job",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/batch/states": {
      "post": {
        "operationId": "postOperatorDataApiBatchStates",
        "summary": "Set states in bulk",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/entities": {
      "post": {
        "operationId": "postOperatorDataApiEntities",
        "summary": "Create or update an entity",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/entities/{externalId}": {
      "delete": {
        "operationId": "deleteOperatorDataApiEntitiesByExternalId",
        "summary": "Delete an entity",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "getOperatorDataApiEntitiesByExternalId",
        "summary": "Get an entity",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/entities/{externalId}/events": {
      "get": {
        "operationId": "getOperatorDataApiEntitiesByExternalIdEvents",
        "summary": "List events for an entity",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postOperatorDataApiEntitiesByExternalIdEvents",
        "summary": "Record an event for an entity",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/entities/{externalId}/state": {
      "get": {
        "operationId": "getOperatorDataApiEntitiesByExternalIdState",
        "summary": "List states for an entity",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/entities/{externalId}/state/{key}": {
      "get": {
        "operationId": "getOperatorDataApiEntitiesByExternalIdStateByKey",
        "summary": "Get one state of an entity",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putOperatorDataApiEntitiesByExternalIdStateByKey",
        "summary": "Set one state of an entity",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/settings": {
      "get": {
        "operationId": "getOperatorDataApiSettings",
        "summary": "Get ingestion settings",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putOperatorDataApiSettings",
        "summary": "Update ingestion settings",
        "description": "Selects the data template for the operator.",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/operator-data-api/templates": {
      "get": {
        "operationId": "getOperatorDataApiTemplates",
        "summary": "List data templates",
        "tags": [
          "Data ingestion"
        ],
        "security": [
          {
            "OperatorApiKey": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/catalog": {
      "get": {
        "operationId": "getPlatformApiCatalog",
        "summary": "List the catalogue",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/catalog/visibility": {
      "get": {
        "operationId": "getPlatformApiCatalogVisibility",
        "summary": "Get catalogue visibility",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putPlatformApiCatalogVisibility",
        "summary": "Update catalogue visibility",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/integration-requests": {
      "post": {
        "operationId": "postPlatformApiIntegrationRequests",
        "summary": "Create an integration request",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/metrics/connectors": {
      "get": {
        "operationId": "getPlatformApiMetricsConnectors",
        "summary": "Get metrics per connector",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/metrics/operators": {
      "get": {
        "operationId": "getPlatformApiMetricsOperators",
        "summary": "Get metrics per operator",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/metrics/summary": {
      "get": {
        "operationId": "getPlatformApiMetricsSummary",
        "summary": "Get a metrics summary",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/operators": {
      "get": {
        "operationId": "getPlatformApiOperators",
        "summary": "List your operators",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postPlatformApiOperators",
        "summary": "Create an operator",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/operators/{operatorId}": {
      "delete": {
        "operationId": "deletePlatformApiOperatorsByOperatorId",
        "summary": "Delete an operator",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "getPlatformApiOperatorsByOperatorId",
        "summary": "Get an operator",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putPlatformApiOperatorsByOperatorId",
        "summary": "Update an operator",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/operators/{operatorId}/api-keys": {
      "get": {
        "operationId": "getPlatformApiOperatorsByOperatorIdApiKeys",
        "summary": "List an operator API keys",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postPlatformApiOperatorsByOperatorIdApiKeys",
        "summary": "Create an API key for an operator",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/operators/{operatorId}/api-keys/{keyId}": {
      "delete": {
        "operationId": "deletePlatformApiOperatorsByOperatorIdApiKeysByKeyId",
        "summary": "Revoke an operator API key",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/operators/{operatorId}/instantiate-integration": {
      "post": {
        "operationId": "postPlatformApiOperatorsByOperatorIdInstantiateIntegration",
        "summary": "Install an integration for an operator",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/settings": {
      "get": {
        "operationId": "getPlatformApiSettings",
        "summary": "Get platform settings",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putPlatformApiSettings",
        "summary": "Update platform settings",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/platform-api/usage/report": {
      "get": {
        "operationId": "getPlatformApiUsageReport",
        "summary": "Get a usage report",
        "tags": [
          "Platform partners"
        ],
        "security": [
          {
            "PlatformApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/stripe/checkout-session": {
      "post": {
        "operationId": "postStripeCheckoutSession",
        "summary": "Create a checkout session",
        "tags": [
          "Billing"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/stripe/portal": {
      "post": {
        "operationId": "postStripePortal",
        "summary": "Create a billing portal session",
        "tags": [
          "Billing"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/supplier-api/adoption": {
      "get": {
        "operationId": "getSupplierApiAdoption",
        "summary": "Get adoption across your connectors",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/supplier-api/adoption/{connectorId}": {
      "get": {
        "operationId": "getSupplierApiAdoptionByConnectorId",
        "summary": "Get adoption for one connector",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/supplier-api/connectors": {
      "get": {
        "operationId": "getSupplierApiConnectors",
        "summary": "List your connectors",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/supplier-api/connectors/{connectorId}": {
      "put": {
        "operationId": "putSupplierApiConnectorsByConnectorId",
        "summary": "Update a connector",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/supplier-api/connectors/{connectorId}/request-review": {
      "post": {
        "operationId": "postSupplierApiConnectorsByConnectorIdRequestReview",
        "summary": "Request a review of a connector",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "connectorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/supplier-api/promotions": {
      "get": {
        "operationId": "getSupplierApiPromotions",
        "summary": "List promotions",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "postSupplierApiPromotions",
        "summary": "Create a promotion",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/supplier-api/promotions/{promotionId}": {
      "delete": {
        "operationId": "deleteSupplierApiPromotionsByPromotionId",
        "summary": "Delete a promotion",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "promotionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putSupplierApiPromotionsByPromotionId",
        "summary": "Update a promotion",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "promotionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/supplier-api/promotions/{promotionId}/metrics": {
      "get": {
        "operationId": "getSupplierApiPromotionsByPromotionIdMetrics",
        "summary": "Get promotion metrics",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "parameters": [
          {
            "name": "promotionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/supplier-api/referrals": {
      "get": {
        "operationId": "getSupplierApiReferrals",
        "summary": "List referrals",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/supplier-api/settings": {
      "get": {
        "operationId": "getSupplierApiSettings",
        "summary": "Get supplier settings",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "putSupplierApiSettings",
        "summary": "Update supplier settings",
        "tags": [
          "Suppliers"
        ],
        "security": [
          {
            "SupplierApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/test-connection": {
      "post": {
        "operationId": "postTestConnection",
        "summary": "Test connection credentials",
        "description": "Probes an endpoint that requires authentication and confirms the submitted credentials are accepted.",
        "tags": [
          "Connections"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/track-event/event": {
      "post": {
        "operationId": "postTrackEventEvent",
        "summary": "Record a landing click (unversioned alias)",
        "tags": [
          "Affiliate tag"
        ],
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/track-event/v1/event": {
      "post": {
        "operationId": "postTrackEventV1Event",
        "summary": "Record a landing click",
        "description": "Called by the browser tag when server sync is enabled.",
        "tags": [
          "Affiliate tag"
        ],
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/track-event/v1/verify": {
      "get": {
        "operationId": "getTrackEventV1Verify",
        "summary": "Verify the tag installation",
        "tags": [
          "Affiliate tag"
        ],
        "security": [],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/track-event/verify": {
      "get": {
        "operationId": "getTrackEventVerify",
        "summary": "Verify the tag installation (unversioned alias)",
        "tags": [
          "Affiliate tag"
        ],
        "security": [],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/webhook-receiver/{webhookId}": {
      "post": {
        "operationId": "postWebhookReceiverByWebhookId",
        "summary": "Trigger a workflow from an inbound webhook",
        "description": "The address shown on a workflow webhook trigger. Ids start with `wh_`.",
        "tags": [
          "Webhooks"
        ],
        "security": [],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/workflow-ai": {
      "post": {
        "operationId": "postWorkflowAi",
        "summary": "Ask the workflow assistant to edit a graph",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "OperatorApiKey": []
          },
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/workflow-engine": {
      "post": {
        "operationId": "postWorkflowEngine",
        "summary": "Run a workflow test",
        "description": "Runs a workflow with `mode` set to `test`, optionally against an unsaved graph supplied in the body. Test runs make real API calls.",
        "tags": [
          "Workflows"
        ],
        "security": [
          {
            "SessionToken": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Success"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "OperatorApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "oh_live_*",
        "description": "Operator API key."
      },
      "PlatformApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "oh_platform_*",
        "description": "Platform partner key."
      },
      "SupplierApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "oh_supplier_*",
        "description": "Supplier key."
      },
      "SessionToken": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "Signed-in session token from the OneHazel app."
      }
    },
    "schemas": {
      "SuccessEnvelope": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "const": true
          },
          "data": {}
        }
      },
      "ErrorEnvelope": {
        "type": "object",
        "required": [
          "success",
          "error"
        ],
        "properties": {
          "success": {
            "const": false
          },
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "responses": {
      "Success": {
        "description": "Success.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SuccessEnvelope"
            }
          }
        }
      },
      "Error": {
        "description": "Error.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        }
      }
    }
  }
}
