{
  "openapi": "3.1.0",
  "info": {
    "title": "SeatLayer Server API",
    "version": "2026-08-01",
    "description": "SeatLayer's public server-to-server reserved-seating API. The linked endpoint guides remain authoritative for complete fields, examples, and lifecycle rules. Browser code must never receive a secret key — mint a scoped embed session instead.",
    "contact": {
      "name": "SeatLayer support",
      "url": "https://seatlayer.io/contact/",
      "email": "hello@seatlayer.io"
    }
  },
  "servers": [
    {
      "url": "https://api.seatlayer.io"
    }
  ],
  "externalDocs": {
    "description": "SeatLayer developer documentation",
    "url": "https://docs.seatlayer.io/"
  },
  "tags": [
    {
      "name": "Health",
      "description": "Dependency-aware service readiness."
    },
    {
      "name": "Charts",
      "description": "Seat-map definitions that events are created from."
    },
    {
      "name": "Events",
      "description": "Event lifecycle and chart snapshots."
    },
    {
      "name": "Inventory",
      "description": "Holds, booking, blocking, and availability."
    },
    {
      "name": "Reports",
      "description": "Event reports and audit history."
    },
    {
      "name": "Sales channels",
      "description": ""
    },
    {
      "name": "Buyer access",
      "description": ""
    },
    {
      "name": "Platform",
      "description": "Workspaces and short-lived embed sessions."
    },
    {
      "name": "Webhooks",
      "description": "Signed webhook subscriptions and delivery history."
    }
  ],
  "paths": {
    "/health/ready": {
      "get": {
        "operationId": "getReadiness",
        "summary": "Check API readiness and required dependencies",
        "tags": [
          "Health"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/start/going-live/"
        },
        "security": [],
        "responses": {
          "200": {
            "description": "API and required dependencies are ready.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/charts": {
      "get": {
        "operationId": "listCharts",
        "summary": "List charts in the account",
        "tags": [
          "Charts"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/designer/charts-and-objects/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createChart",
        "summary": "Create a chart",
        "tags": [
          "Charts"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/designer/charts-and-objects/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChartCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Chart created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/charts/{chartId}": {
      "get": {
        "operationId": "retrieveChart",
        "summary": "Retrieve a chart and its document",
        "tags": [
          "Charts"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/designer/charts-and-objects/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "chartId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateChart",
        "summary": "Replace a chart document (requires expectedUpdatedAt)",
        "tags": [
          "Charts"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/designer/charts-and-objects/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "chartId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChartUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Chart document replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteChart",
        "summary": "Delete a chart",
        "tags": [
          "Charts"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/designer/charts-and-objects/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "chartId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/charts/{chartId}/duplicate": {
      "post": {
        "operationId": "copyChart",
        "summary": "Copy a chart",
        "tags": [
          "Charts"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/designer/templates/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "chartId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/charts/{chartId}/archive": {
      "post": {
        "operationId": "archiveChart",
        "summary": "Move a chart to the archive",
        "tags": [
          "Charts"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/designer/charts-and-objects/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "chartId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/charts/{chartId}/unarchive": {
      "post": {
        "operationId": "unarchiveChart",
        "summary": "Restore a chart from the archive",
        "tags": [
          "Charts"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/designer/charts-and-objects/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "chartId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/charts/{chartId}/publish": {
      "post": {
        "operationId": "publishChart",
        "summary": "Publish the chart draft so events can use it",
        "tags": [
          "Charts"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/designer/publishing-and-versioning/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "chartId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events": {
      "get": {
        "operationId": "listEvents",
        "summary": "List events",
        "tags": [
          "Events"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/events/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createEvent",
        "summary": "Create an event from a published chart",
        "tags": [
          "Events"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/events/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Event created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}": {
      "get": {
        "operationId": "retrieveEvent",
        "summary": "Retrieve an event",
        "tags": [
          "Events"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/events/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "updateEvent",
        "summary": "Update event metadata",
        "tags": [
          "Events"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/events/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteEvent",
        "summary": "Delete an event",
        "tags": [
          "Events"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/events/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/update-chart": {
      "post": {
        "operationId": "updateEventChart",
        "summary": "Re-point a live event at the latest published chart",
        "tags": [
          "Events"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/designer/publishing-and-versioning/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/close": {
      "post": {
        "operationId": "closeEvent",
        "summary": "Close sales for an event",
        "tags": [
          "Events"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/events/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/reopen": {
      "post": {
        "operationId": "reopenEvent",
        "summary": "Reopen sales for an event",
        "tags": [
          "Events"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/events/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/archive": {
      "post": {
        "operationId": "archiveEvent",
        "summary": "Move an event to the archive",
        "tags": [
          "Events"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/events/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/hold": {
      "post": {
        "operationId": "holdObjects",
        "summary": "Hold objects for a buyer",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/holds/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HoldRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Requested inventory held atomically.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/extend": {
      "post": {
        "operationId": "extendHold",
        "summary": "Extend an active hold before it expires",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/holds/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/best-available": {
      "post": {
        "operationId": "holdBestAvailable",
        "summary": "Pick and hold the best available objects",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/holds/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BestAvailableRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Best available objects picked and held.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/best-available-book": {
      "post": {
        "operationId": "bookBestAvailable",
        "summary": "Pick and book the best available objects in one call",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/booking/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BestAvailableBookRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Best available objects picked and booked outright.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/holds/{holdId}": {
      "get": {
        "operationId": "retrieveHold",
        "summary": "Retrieve a hold with authoritative pricing",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/integrations/ticketing-backend/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "holdId",
            "in": "path",
            "required": true,
            "description": "Opaque hold identifier returned by the Buyer SDK or hold API.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/release": {
      "post": {
        "operationId": "releaseObjects",
        "summary": "Release held objects",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/holds/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReleaseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/book": {
      "post": {
        "operationId": "bookObjects",
        "summary": "Book objects, by hold id or by label",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/booking/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BookRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Objects booked.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/box-book": {
      "post": {
        "operationId": "boxOfficeBookObjects",
        "summary": "Book objects as a box-office sale",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/cancellations-and-box-office/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BoxOfficeBookRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/unbook": {
      "post": {
        "operationId": "unbookObjects",
        "summary": "Release previously booked objects",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/cancellations-and-box-office/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LabelsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/block": {
      "post": {
        "operationId": "blockObjects",
        "summary": "Block objects from sale",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/blocking/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LabelsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/unblock": {
      "post": {
        "operationId": "unblockObjects",
        "summary": "Unblock objects",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/blocking/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LabelsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/unblock-all": {
      "post": {
        "operationId": "unblockAllObjects",
        "summary": "Unblock every blocked object in an event",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/blocking/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/availability": {
      "get": {
        "operationId": "retrieveAvailability",
        "summary": "Read per-object availability",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/inventory/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "updateAvailability",
        "summary": "Set per-object availability",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/inventory/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/hold-ttl": {
      "get": {
        "operationId": "retrieveHoldTtl",
        "summary": "Read the checkout window for an event",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/holds/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "updateHoldTtl",
        "summary": "Set the checkout window for an event",
        "tags": [
          "Inventory"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/holds/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HoldTtlRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/report": {
      "get": {
        "operationId": "retrieveEventReport",
        "summary": "Retrieve an event report",
        "tags": [
          "Reports"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/reports/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/log": {
      "get": {
        "operationId": "retrieveEventLog",
        "summary": "Retrieve the event audit log",
        "tags": [
          "Reports"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/reports/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/report": {
      "get": {
        "operationId": "retrieveChannelReport",
        "summary": "Retrieve current allocation and sale attribution per sales channel",
        "tags": [
          "Reports"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/reports/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels": {
      "get": {
        "operationId": "listChannels",
        "summary": "List an event’s sales channels with current allocation counts",
        "tags": [
          "Sales channels"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createChannel",
        "summary": "Create a sales channel",
        "tags": [
          "Sales channels"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Sales channel created, with zeroed counts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/{channelId}": {
      "patch": {
        "operationId": "updateChannel",
        "summary": "Rename a sales channel or change its declared access method",
        "tags": [
          "Sales channels"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "description": "channelId path parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/assignments": {
      "post": {
        "operationId": "updateChannelAssignments",
        "summary": "Move inventory between sales channels, versioned and non-destructive",
        "tags": [
          "Sales channels"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelAssignmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Applied. The six mutually exclusive buckets report exactly what happened; held and booked inventory is never moved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/allocation": {
      "get": {
        "operationId": "listChannelAllocation",
        "summary": "Page the label-to-channel allocation map",
        "tags": [
          "Sales channels"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/preview": {
      "get": {
        "operationId": "retrieveChannelAccessPreview",
        "summary": "Preview the seat projection a given channel scope would receive",
        "tags": [
          "Sales channels"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/{channelId}/pause": {
      "post": {
        "operationId": "pauseChannel",
        "summary": "Pause a sales channel (no new access, no new holds)",
        "tags": [
          "Sales channels"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "description": "channelId path parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelReasonRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Channel paused. Existing holds run to their normal expiry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/{channelId}/unpause": {
      "post": {
        "operationId": "unpauseChannel",
        "summary": "Resume a paused sales channel",
        "tags": [
          "Sales channels"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "description": "channelId path parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelReasonRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/{channelId}/archive": {
      "post": {
        "operationId": "archiveChannel",
        "summary": "Archive a sales channel, returning its inventory to a destination",
        "tags": [
          "Sales channels"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "description": "channelId path parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelArchiveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Archived. Remaining inventory moved to the destination and the channel's buyer sessions revoked; sales it already made keep their attribution.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/buyer-access-sessions": {
      "post": {
        "operationId": "createBuyerAccessSession",
        "summary": "Mint a short-lived buyer access session scoped to named channels",
        "tags": [
          "Buyer access"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/buyer-access-sessions/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuyerAccessSessionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Session minted. The token is returned exactly once and is never recoverable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "listBuyerAccessSessions",
        "summary": "List buyer access sessions with scope, state, and expiry (never the token)",
        "tags": [
          "Buyer access"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/buyer-access-sessions/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/buyer-access-sessions/{sessionId}": {
      "delete": {
        "operationId": "revokeBuyerAccessSession",
        "summary": "Revoke a buyer access session immediately",
        "tags": [
          "Buyer access"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/buyer-access-sessions/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Short-lived session identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/{channelId}/access-links": {
      "post": {
        "operationId": "createAccessLink",
        "summary": "Create a hosted access link for a channel (capability revealed once)",
        "tags": [
          "Buyer access"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "description": "channelId path parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccessLinkCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Link created. This response is the ONLY copy of the link capability.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "listAccessLinks",
        "summary": "List a channel’s hosted access links (status only, never the capability)",
        "tags": [
          "Buyer access"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "description": "channelId path parameter.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/{channelId}/access-links/{linkId}/rotate": {
      "post": {
        "operationId": "rotateAccessLink",
        "summary": "Rotate a hosted access link, issuing a replacement capability",
        "tags": [
          "Buyer access"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "description": "channelId path parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linkId",
            "in": "path",
            "required": true,
            "description": "linkId path parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccessLinkRotateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successor link issued and the predecessor ended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/channels/{channelId}/access-links/{linkId}": {
      "delete": {
        "operationId": "revokeAccessLink",
        "summary": "Revoke a hosted access link, optionally ending active sessions",
        "tags": [
          "Buyer access"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/server-api/channels/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "description": "channelId path parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linkId",
            "in": "path",
            "required": true,
            "description": "linkId path parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/manage-sessions": {
      "post": {
        "operationId": "createManageSession",
        "summary": "Mint an origin-bound manage-session token for the control room",
        "tags": [
          "Platform"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/platform/embed-sessions/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManageSessionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Origin-bound manage-session token minted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events/{eventKey}/manage-sessions/{id}": {
      "delete": {
        "operationId": "revokeManageSession",
        "summary": "Revoke a manage-session token early",
        "tags": [
          "Platform"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/platform/embed-sessions/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "eventKey",
            "in": "path",
            "required": true,
            "description": "SeatLayer event key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/designer/sessions": {
      "post": {
        "operationId": "createDesignerSession",
        "summary": "Mint an origin-bound designer-session token",
        "tags": [
          "Platform"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/platform/embedded-designer/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DesignerSessionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Origin-bound designer-session token minted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/designer/sessions/{id}": {
      "delete": {
        "operationId": "revokeDesignerSession",
        "summary": "Revoke a designer-session token early",
        "tags": [
          "Platform"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/platform/embedded-designer/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks": {
      "get": {
        "operationId": "listWebhooks",
        "summary": "List webhook subscriptions",
        "tags": [
          "Webhooks"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/webhooks/manage-subscriptions/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createWebhook",
        "summary": "Create a webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/webhooks/manage-subscriptions/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks/{webhookId}": {
      "patch": {
        "operationId": "updateWebhook",
        "summary": "Update a webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/webhooks/manage-subscriptions/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteWebhook",
        "summary": "Delete a webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/webhooks/manage-subscriptions/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks/{webhookId}/deliveries": {
      "get": {
        "operationId": "listWebhookDeliveries",
        "summary": "List recent deliveries for a webhook",
        "tags": [
          "Webhooks"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/webhooks/delivery-and-retries/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces": {
      "get": {
        "operationId": "listWorkspaces",
        "summary": "List workspaces",
        "tags": [
          "Platform"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/platform/workspaces/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createWorkspace",
        "summary": "Create a workspace",
        "tags": [
          "Platform"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/platform/workspaces/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkspaceCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspaceId}": {
      "patch": {
        "operationId": "updateWorkspace",
        "summary": "Rename a workspace or set it active/disabled",
        "tags": [
          "Platform"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/platform/workspaces/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable key so a retried request cannot apply twice. Reuse it across retries of the same logical call; reusing it with a different body returns 409.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkspaceUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — inventory moved, an Idempotency-Key was reused with a different body, or a guard rejected the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "retrieveWorkspace",
        "summary": "Retrieve a workspace",
        "tags": [
          "Platform"
        ],
        "externalDocs": {
          "url": "https://docs.seatlayer.io/platform/workspaces/"
        },
        "security": [
          {
            "secretKey": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "description": "Resource identifier.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response. See the linked endpoint guide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonObject"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid secret key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The key lacks authority for this resource, or the key mode and event mode disagree (code: mode_mismatch).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such resource for this organisation. Never discloses whether it exists elsewhere.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request understood but rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited. Honour Retry-After; the RateLimit-* headers describe the active policy.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait."
              },
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "secretKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "sk_test_ or sk_live_",
        "description": "Server-only sk_test_… or sk_live_… credential. A key can only act on events of its own mode; crossing them returns 403 mode_mismatch. Never expose it to browser or mobile code."
      }
    },
    "schemas": {
      "JsonObject": {
        "type": "object",
        "additionalProperties": true,
        "description": "Endpoint-specific JSON. Follow the linked guide for the complete field contract."
      },
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable error slug."
          },
          "code": {
            "type": "string",
            "description": "Machine-readable code, when more specific."
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": true
      },
      "Labels": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "minItems": 1,
        "description": "Object labels exactly as they appear in the published chart."
      },
      "LabelsRequest": {
        "type": "object",
        "required": [
          "labels"
        ],
        "properties": {
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "additionalProperties": false
      },
      "ChartCreateRequest": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "doc": {
            "type": "object",
            "additionalProperties": true,
            "description": "Optional chart document, for migrations and bulk import."
          },
          "externalRef": {
            "type": "string",
            "maxLength": 128
          },
          "workspaceId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ChartUpdateRequest": {
        "type": "object",
        "required": [
          "doc",
          "expectedUpdatedAt"
        ],
        "properties": {
          "doc": {
            "type": "object",
            "additionalProperties": true
          },
          "expectedUpdatedAt": {
            "type": "integer",
            "description": "Optimistic concurrency guard: the updatedAt you last read. A stale value is rejected rather than silently overwriting another writer's work."
          },
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EventCreateRequest": {
        "type": "object",
        "required": [
          "chartId"
        ],
        "properties": {
          "chartId": {
            "type": "string",
            "description": "Published source chart id."
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9_-]{3,64}$"
          },
          "startsAt": {
            "type": "integer",
            "description": "Epoch milliseconds."
          },
          "venue": {
            "type": "string"
          },
          "externalRef": {
            "type": "string",
            "maxLength": 128
          },
          "currency": {
            "type": [
              "string",
              "null"
            ],
            "description": "Three-letter event currency override."
          }
        },
        "additionalProperties": false
      },
      "HoldSelection": {
        "type": "object",
        "required": [
          "label"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "tierId": {
            "type": "string"
          },
          "quantity": {
            "type": "integer",
            "minimum": 1
          }
        },
        "additionalProperties": false
      },
      "HoldRequest": {
        "type": "object",
        "properties": {
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "selections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HoldSelection"
            },
            "minItems": 1
          },
          "ttlMs": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3600000,
            "description": "Requested hold window, clamped server-side."
          },
          "replaceHoldId": {
            "type": "string"
          }
        },
        "oneOf": [
          {
            "required": [
              "labels"
            ]
          },
          {
            "required": [
              "selections"
            ]
          }
        ],
        "additionalProperties": false
      },
      "BestAvailableRequest": {
        "type": "object",
        "required": [
          "qty"
        ],
        "properties": {
          "qty": {
            "type": "integer",
            "minimum": 1,
            "description": "Requested quantity. Clamped to the server maximum, not rejected."
          },
          "categoryKey": {
            "type": "string"
          },
          "zoneId": {
            "type": "string",
            "maxLength": 160
          },
          "ttlMs": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3600000
          }
        },
        "additionalProperties": false
      },
      "BestAvailableBookRequest": {
        "type": "object",
        "required": [
          "qty",
          "bookingRef"
        ],
        "properties": {
          "qty": {
            "type": "integer",
            "minimum": 1
          },
          "bookingRef": {
            "type": "string",
            "description": "Your order reference. Required so the sale can be reconciled."
          },
          "categoryKey": {
            "type": "string"
          },
          "zoneId": {
            "type": "string",
            "maxLength": 160
          }
        },
        "additionalProperties": false
      },
      "ReleaseRequest": {
        "type": "object",
        "required": [
          "labels",
          "holdId"
        ],
        "properties": {
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "holdId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "BookRequest": {
        "type": "object",
        "properties": {
          "holdId": {
            "type": "string",
            "description": "Book a previously held selection."
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "bookingRef": {
            "type": "string",
            "description": "Stable host order reference used for idempotent retries."
          }
        },
        "oneOf": [
          {
            "required": [
              "holdId"
            ]
          },
          {
            "required": [
              "labels"
            ]
          }
        ],
        "additionalProperties": false
      },
      "BoxOfficeBookRequest": {
        "type": "object",
        "required": [
          "labels",
          "bookingRef"
        ],
        "properties": {
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "bookingRef": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "HoldTtlRequest": {
        "type": "object",
        "required": [
          "holdTtlMs"
        ],
        "properties": {
          "holdTtlMs": {
            "type": "integer",
            "minimum": 1,
            "description": "Checkout window buyers get for this event."
          }
        },
        "additionalProperties": false
      },
      "ManageSessionRequest": {
        "type": "object",
        "required": [
          "allowedOrigin"
        ],
        "properties": {
          "allowedOrigin": {
            "type": "string",
            "description": "https origin the minted token is bound to."
          },
          "capabilities": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "event:view",
                "event:block",
                "event:cancel",
                "event:reports",
                "event:channels:view",
                "event:channels:manage"
              ]
            },
            "description": "Omitting this grants the ORIGINAL FOUR, including event:cancel, which reverses paid bookings. Always send the smallest set the page needs. The two channel capabilities are never granted by omission — ask for them by name."
          },
          "expiresInSeconds": {
            "type": "integer",
            "minimum": 300,
            "maximum": 14400
          }
        },
        "additionalProperties": false
      },
      "DesignerSessionRequest": {
        "type": "object",
        "required": [
          "workspaceId",
          "chartId",
          "allowedOrigin"
        ],
        "properties": {
          "workspaceId": {
            "type": "string"
          },
          "chartId": {
            "type": "string",
            "description": "Must already exist — create or copy a chart first."
          },
          "allowedOrigin": {
            "type": "string"
          },
          "authority": {
            "type": "string",
            "enum": [
              "read-only",
              "edit",
              "publish"
            ]
          },
          "mode": {
            "type": "string",
            "enum": [
              "normal",
              "safe"
            ]
          },
          "expiresInSeconds": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "WebhookCreateRequest": {
        "type": "object",
        "required": [
          "url",
          "events"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          }
        },
        "additionalProperties": false
      },
      "WorkspaceCreateRequest": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "externalRef": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 128
          }
        },
        "additionalProperties": false
      },
      "WorkspaceUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "externalRef": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 128
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "disabled"
            ],
            "description": "The organisation default workspace cannot be disabled — promote another first."
          },
          "isDefault": {
            "type": "boolean",
            "enum": [
              true
            ]
          }
        },
        "additionalProperties": false
      },
      "ChannelCreateRequest": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 80,
            "description": "Unique within the event, case-insensitively. 'Public sale' and 'public' are reserved."
          },
          "color": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 120,
            "description": "Organizer-facing only; never reaches a buyer."
          },
          "marker": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 120,
            "description": "Organizer-facing only; never reaches a buyer."
          },
          "externalRef": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 120,
            "description": "Your own stable identifier. This is the reconciliation key on reports and booking webhooks, and it survives a rename."
          },
          "accessIntent": {
            "type": "string",
            "enum": [
              "none",
              "internal",
              "server",
              "hosted_link"
            ],
            "description": "How you INTEND buyers to reach this channel. Metadata only — it grants nothing."
          },
          "reason": {
            "type": "string",
            "maxLength": 400,
            "description": "Recorded in the channel audit trail."
          }
        },
        "additionalProperties": false
      },
      "ChannelUpdateRequest": {
        "type": "object",
        "description": "Send name, accessIntent, or both. Sending neither is a 422.",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 80
          },
          "accessIntent": {
            "type": "string",
            "enum": [
              "none",
              "internal",
              "server",
              "hosted_link"
            ]
          },
          "reason": {
            "type": "string",
            "maxLength": 400
          }
        },
        "additionalProperties": false
      },
      "ChannelAssignmentRequest": {
        "type": "object",
        "required": [
          "labels",
          "assignmentVersion"
        ],
        "properties": {
          "labels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 5000,
            "description": "De-duplicated server-side. At most 5000 inventory units per request."
          },
          "assignmentVersion": {
            "type": "integer",
            "minimum": 0,
            "description": "The version you last read. Concurrency control, not decoration: a stale value moves nothing and returns 409 channel_assignment_conflict with the current version. It moves only when an assignment lands, so a busy on-sale never makes a staged edit look stale."
          },
          "targetChannelId": {
            "type": [
              "string",
              "null"
            ],
            "description": "null or 'public' both mean Public sale. Defaults to Public sale."
          },
          "reason": {
            "type": "string",
            "maxLength": 400
          }
        },
        "additionalProperties": false
      },
      "ChannelReasonRequest": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "maxLength": 400
          }
        },
        "additionalProperties": false
      },
      "ChannelArchiveRequest": {
        "type": "object",
        "required": [
          "destination"
        ],
        "properties": {
          "destination": {
            "type": [
              "string",
              "null"
            ],
            "description": "Where remaining inventory goes. null or 'public' means Public sale; otherwise an active channel that is not this one. The key must be present — there is no default."
          },
          "reason": {
            "type": "string",
            "maxLength": 400
          }
        },
        "additionalProperties": false
      },
      "BuyerAccessSessionRequest": {
        "type": "object",
        "required": [
          "allowedOrigin",
          "includePublic"
        ],
        "properties": {
          "allowedOrigin": {
            "type": "string",
            "description": "One canonical https origin, checked on every request the token makes."
          },
          "includePublic": {
            "type": "boolean",
            "description": "REQUIRED and never defaulted. Getting it wrong is expensive in both directions, so the server refuses to guess."
          },
          "channelIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 20,
            "description": "Channels this buyer may select. Each must belong to this event and be active. Empty with includePublic:false is an empty scope and is rejected."
          },
          "expiresInSeconds": {
            "type": "integer",
            "minimum": 60,
            "maximum": 43200,
            "default": 1800
          },
          "maxQuantity": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 100,
            "description": "Guest-weighted ceiling summed across ALL of this buyer's live holds, so a second tab cannot double the allowance."
          },
          "buyerRef": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 120,
            "description": "Opaque, pseudonymous."
          },
          "partnerRef": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 120,
            "description": "Opaque partner reference. Its presence records the sale as 'partner' rather than 'promoter', and it appears on the booking webhook."
          },
          "clientRequestId": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 120,
            "description": "Makes a retry safe. A repeat revokes the earlier session and issues a fresh token rather than replaying a stored bearer."
          }
        },
        "additionalProperties": false
      },
      "AccessLinkCreateRequest": {
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 80
          },
          "expiresAt": {
            "type": "integer",
            "description": "Absolute epoch milliseconds, NOT a duration. Defaults to the event start, or seven days out. Must resolve to between 60 seconds and 180 days from now."
          },
          "maxRedemptions": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000,
            "default": 100
          },
          "maxQuantity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 4
          },
          "sessionTtlSeconds": {
            "type": "integer",
            "minimum": 60,
            "maximum": 43200,
            "default": 1800
          },
          "includePublic": {
            "type": "boolean",
            "default": false
          },
          "reason": {
            "type": "string",
            "maxLength": 400
          }
        },
        "additionalProperties": false
      },
      "AccessLinkRotateRequest": {
        "type": "object",
        "required": [
          "endActiveSessions"
        ],
        "properties": {
          "endActiveSessions": {
            "type": "boolean",
            "description": "REQUIRED. false leaves sessions already minted from the old link working until they expire (the link was misplaced); true cascade-revokes them before the rotation is acknowledged (the link leaked)."
          },
          "reason": {
            "type": "string",
            "maxLength": 400
          }
        },
        "additionalProperties": false
      }
    }
  }
}
