Arcade Engine API

The Arcade Engine HTTP API — the control plane for tool catalogs, user authorization flows, tool execution, scheduled tools, MCP gateways, workers, hooks, plugins, and admin operations. Tagged surfaces are Admin, Authorization, Tools, LLM, Operations, Hooks, Gateways, and Plugins.

Documentation

Specifications

SDKs

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-tool-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-tool-execution-detail-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-execute-tool-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-execute-tool-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-authorize-tool-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-authorization-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-auth-provider-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-worker-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-hook-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-gateway-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-plugin-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-schema/arcade-engine-secret-response-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-tool-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-tool-execution-detail-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-execute-tool-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-execute-tool-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-authorize-tool-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-authorization-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-auth-provider-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-worker-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-hook-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-gateway-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-plugin-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/json-structure/arcade-engine-secret-response-structure.json

Other Resources

OpenAPI Specification

arcade-engine-openapi.yml Raw ↑
openapi: 3.0.0
info:
  description: Reference Documentation for Arcade Engine API
  title: Arcade API
  contact:
    name: Arcade
    url: https://arcade.dev
    email: [email protected]
  license:
    name: Proprietary
    url: https://arcade.dev/license
  version: 0.1.0
paths:
  /v1/admin/auth_providers:
    get:
      security:
        - Bearer: []
      description: List a page of auth providers that are available to the caller
      tags:
        - Admin
      summary: List Auth Providers
      operationId: auth-providers-list
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.OffsetPage-schemas_AuthProviderResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
    post:
      security:
        - Bearer: []
      description: Create a new auth provider
      tags:
        - Admin
      summary: Create an Auth Provider
      operationId: auth-providers-create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.AuthProviderCreateRequest'
        description: The auth provider to create
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.AuthProviderResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/admin/auth_providers/{id}:
    get:
      security:
        - Bearer: []
      description: Get the details of a specific auth provider
      tags:
        - Admin
      summary: Get an Auth Provider
      operationId: auth-providers-get
      parameters:
        - description: The ID of the auth provider to get
          name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.AuthProviderResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
    delete:
      security:
        - Bearer: []
      description: Delete a specific auth provider
      tags:
        - Admin
      summary: Delete an Auth Provider
      operationId: auth-providers-delete
      parameters:
        - description: The ID of the auth provider to delete
          name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.AuthProviderResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
    patch:
      security:
        - Bearer: []
      description: Patch an existing auth provider
      tags:
        - Admin
      summary: Patch an Auth Provider
      operationId: auth-providers-update
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.AuthProviderPatchRequest'
        description: The auth provider to update
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.AuthProviderResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/admin/secrets:
    get:
      security:
        - Bearer: []
      description: List all secrets that are visible to the caller
      tags:
        - Admin
      summary: List Secrets
      operationId: secrets-list
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.OffsetPage-schemas_StoredSecretResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/admin/secrets/{secret_id}:
    delete:
      security:
        - Bearer: []
      description: Delete a secret by its ID
      tags:
        - Admin
      summary: Delete Secret
      operationId: secrets-delete
      parameters:
        - description: The ID of the secret to delete
          name: secret_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/admin/secrets/{secret_key}:
    post:
      security:
        - Bearer: []
      description: Create or update a secret
      tags:
        - Admin
      summary: Upsert Secret
      operationId: secrets-upsert
      parameters:
        - description: The key of the secret to upsert
          name: secret_key
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.UpsertStoredSecretRequest'
        description: The secret to upsert
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.StoredSecretResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/admin/settings/session_verification:
    get:
      security:
        - Bearer: []
      description: Get the current session verification settings for the caller
      tags:
        - Admin
      summary: Get Session Verification Settings
      operationId: session-verification-settings-get
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.SessionVerificationSettingsResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
    put:
      security:
        - Bearer: []
      description: Update session verification settings for the caller
      tags:
        - Admin
      summary: Update Session Verification Settings
      operationId: session-verification-settings-update
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.UpdateSessionVerificationSettingsRequest'
        description: The settings to update
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.SessionVerificationSettingsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/admin/user_connections:
    get:
      security:
        - Bearer: []
      description: List all auth connections
      tags:
        - Admin
      summary: List Auth Connections
      operationId: auth-connections-list
      parameters:
        - description: Provider ID
          name: provider_id
          in: query
          schema:
            type: string
        - description: User ID
          name: user_id
          in: query
          schema:
            type: string
        - description: Page size
          name: limit
          in: query
          schema:
            type: integer
        - description: Page offset
          name: offset
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.OffsetPage-schemas_UserAuthProviderConnectionResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/admin/user_connections/{id}:
    delete:
      security:
        - Bearer: []
      description: Delete a user/auth provider connection
      tags:
        - Admin
      summary: Delete Auth Connection
      operationId: auth-connections-delete
      parameters:
        - description: Connection ID
          name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/auth/authorize:
    post:
      security:
        - Bearer: []
        - Bearer: []
      description: Starts the authorization process for given authorization requirements
      tags:
        - Authorization
      summary: Initiate Authorization
      operationId: initiate-authorization
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.AuthorizationInitiationRequest'
        description: Authorization request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/auth.AuthorizationResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/auth/confirm_user:
    post:
      security:
        - Bearer: []
        - Bearer: []
      description: Confirms a user's details during an authorization flow
      tags:
        - Authorization
      summary: Confirm User Authorization
      operationId: confirm-user-auth-flow
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.AuthorizationConfirmUserRequest'
        description: User confirmation request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.AuthorizationConfirmUserResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/auth/status:
    get:
      security:
        - Bearer: []
        - Bearer: []
      description: "Checks the status of an ongoing authorization process for a specific tool.\nIf 'wait' param is present, does not respond until either the auth status becomes completed or the timeout is reached."
      tags:
        - Authorization
      summary: Check Authorization Status
      operationId: auth-status
      parameters:
        - description: Authorization ID
          name: id
          in: query
          required: true
          schema:
            type: string
        - description: Timeout in seconds (max 59)
          name: wait
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/auth.AuthorizationResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/auth/validate_custom_verifier:
    post:
      security:
        - Bearer: []
        - Bearer: []
      description: Starts a test authorization flow
      tags:
        - Authorization
      summary: Test Authorization Flow
      operationId: test-authorization-flow
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.ValidateCustomVerifierRequest'
        description: Validate custom verifier request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.ValidateCustomVerifierResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/chat/completions:
    post:
      security:
        - Bearer: []
      description: Interact with language models via OpenAI's chat completions API
      tags:
        - LLM
      summary: Language Model Chat
      operationId: llm-chat
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.ChatRequest'
        description: Request Data
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.ChatResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/config:
    get:
      description: Get the Engine configuration
      tags:
        - Operations
      summary: Get Engine Config
      operationId: engine-config
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.EngineConfigResponse'
  /v1/formatted_tools:
    get:
      security:
        - Bearer: []
        - Bearer: []
      description: Returns a page of tools from the engine configuration, optionally filtered by toolkit, formatted for a specific provider
      tags:
        - Tools
      summary: List Formatted Static Tools
      operationId: tools-list-formatted
      parameters:
        - description: Toolkit name
          name: toolkit
          in: query
          schema:
            type: string
        - description: 'Number of items to return (default: 25, max: 100)'
          name: limit
          in: query
          schema:
            type: integer
        - description: 'Offset from the start of the list (default: 0)'
          name: offset
          in: query
          schema:
            type: integer
        - description: Provider format
          name: format
          in: query
          schema:
            type: string
        - description: User ID
          name: user_id
          in: query
          schema:
            type: string
        - description: Include all versions of each tool
          name: include_all_versions
          in: query
          schema:
            type: boolean
        - description: 'JSON metadata filter. Array fields (service_domains, operations): shorthand array or object with any_of/all_of/none_of operators (case-insensitive). Boolean fields: read_only, destructive, idempotent, open_world. Extras: case-sensitive key-value subset match.'
          name: filter
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.OffsetPage-schemas_ArbitraryObject'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/formatted_tools/{name}:
    get:
      security:
        - Bearer: []
      description: Returns the formatted tool specification for a specific tool, given a provider
      tags:
        - Tools
      summary: Get Formatted Tool Specification
      operationId: tool-spec-formatted
      parameters:
        - description: Tool name
          name: name
          in: path
          required: true
          schema:
            type: string
        - description: Provider format
          name: format
          in: query
          schema:
            type: string
        - description: User ID
          name: user_id
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.ArbitraryObject'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/health:
    get:
      description: Check if Arcade Engine is healthy
      tags:
        - Operations
      summary: Engine Health Check
      operationId: arcade-health
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.HealthSchema'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.HealthSchema'
  /v1/hooks:
    get:
      security:
        - Bearer: []
      description: Returns all hooks for the current binding with optional filtering
      tags:
        - Hooks
      summary: List Hooks
      operationId: hooks-list
      parameters:
        - description: Limit
          name: limit
          in: query
          schema:
            type: integer
        - description: Offset
          name: offset
          in: query
          schema:
            type: integer
        - description: Filter by hook point
          name: hook_point
          in: query
          schema:
            type: string
        - description: Filter by plugin ID
          name: plugin_id
          in: query
          schema:
            type: string
        - description: Filter by status
          name: status
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.OffsetPage-schemas_HookResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
    post:
      security:
        - Bearer: []
      description: Creates a new hook configuration
      tags:
        - Hooks
      summary: Create a Hook
      operationId: hooks-create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.CreateHookRequest'
        description: Hook configuration
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.HookResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/hooks/bulk:
    patch:
      security:
        - Bearer: []
      description: Creates or updates multiple hooks at once. The operation is transactional.
      tags:
        - Hooks
      summary: Bulk Upsert Hooks
      operationId: hooks-bulk-upsert
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.BulkUpsertHooksRequest'
        description: Bulk hook configurations
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.BulkUpsertHooksResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/hooks/{hook_id}:
    get:
      security:
        - Bearer: []
      description: Returns a single hook by ID
      tags:
        - Hooks
      summary: Get a Hook
      operationId: hooks-get
      parameters:
        - description: Hook ID
          name: hook_id
          in: path
          required: true
          schema:
            type: string
        - description: Filter by binding type (tenant or project)
          name: binding_type
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.HookResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
    delete:
      security:
        - Bearer: []
      description: Deletes a hook by ID
      tags:
        - Hooks
      summary: Delete a Hook
      operationId: hooks-delete
      parameters:
        - description: Hook ID
          name: hook_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
    patch:
      security:
        - Bearer: []
      description: Updates an existing hook configuration
      tags:
        - Hooks
      summary: Update a Hook
      operationId: hooks-update
      parameters:
        - description: Hook ID
          name: hook_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.PatchHookRequest'
        description: Hook configuration to update
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.HookResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/orgs/{org_id}/projects/{project_id}/gateways:
    get:
      security:
        - Bearer: []
      description: Returns a paginated list of gateways for the current

# --- truncated at 32 KB (142 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/arcade/refs/heads/main/openapi/arcade-engine-openapi.yml