{
  "openapi": "3.1.0",
  "info": {
    "title": "Gomry Public API",
    "version": "1.0.0",
    "summary": "Events, ticket classes, attendees, contacts, experiences and payments.",
    "description": "The Gomry REST API. Keys are organization-scoped and carry per-resource `read`/`write` scopes. Rate limit: 60 requests per 10 seconds per key, reported on every response via `RateLimit-Limit` / `RateLimit-Remaining` / `RateLimit-Reset`. Write endpoints accept an `Idempotency-Key` header with a 24-hour replay window. Errors share one shape: a stable `error` code to branch on, plus a human-readable `message` that is not part of the contract.\n\n## Versioning and deprecation\n\nThe API is versioned in the URL (`/api/v1`). Additive changes — new endpoints, new optional request fields, new response fields — ship within a version and are not breaking; clients must ignore unknown response fields. A breaking change ships as a new version path; `v1` is not altered in place.\n\nBefore an endpoint or version is withdrawn it is marked `deprecated` in this document and its responses carry RFC 8594 `Deprecation` and `Sunset` headers, plus a `Link` header with `rel=\"deprecation\"` pointing at the migration notes. The `Sunset` date is at least 180 days after the `Deprecation` date, so a client polling this spec or reading those headers always has a full migration window.\n\n## Testing without moving money\n\nThere is no separate sandbox HOST — the base URL above is the only one, and a key issued for an organization only ever reaches that organization's data, so an integration cannot touch another tenant's records by accident. Exercise the API safely by pointing a key at an organization you control and using **free ticket classes** (price `0`): the full create-event → register → check-in path runs end to end, writes real records you can read back and delete, and never charges a card, because free registrations carry no payment and no fee.\n\nFor paid flows, connect that organization to a Stripe account in test mode: Stripe then accepts its published test cards and no live money moves. Agentic checkout requires a delegated payment token, so the same Stripe test-mode account is what makes `POST /checkout_sessions` exercisable without a real card.\n\nDestructive verbs are scoped by the key: a key without `write` on a resource cannot modify it, so issuing a read-only key is the cheapest way for an agent to explore this API with no risk of changing anything.",
    "contact": {
      "name": "Gomry",
      "url": "https://docs.gomry.com"
    },
    "license": {
      "name": "Gomry API Terms",
      "url": "https://www.gomry.com/terms-of-service"
    }
  },
  "servers": [
    {
      "url": "https://www.gomry.com/api/v1",
      "description": "Production"
    }
  ],
  "externalDocs": {
    "url": "https://docs.gomry.com",
    "description": "Full REST API reference, webhooks and guides"
  },
  "paths": {
    "/events": {
      "get": {
        "operationId": "listEvents",
        "summary": "List events",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "events:read"
            ]
          },
          {
            "bearerAuth": [
              "events:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated filter values."
          }
        ]
      },
      "post": {
        "operationId": "createEvent",
        "summary": "Create an event",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "events:write"
            ]
          },
          {
            "bearerAuth": [
              "events:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/events/{eventId}": {
      "get": {
        "operationId": "getEvent",
        "summary": "Retrieve an event",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "events:read"
            ]
          },
          {
            "bearerAuth": [
              "events:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          }
        ]
      },
      "patch": {
        "operationId": "updateEvent",
        "summary": "Update an event",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "events:write"
            ]
          },
          {
            "bearerAuth": [
              "events:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteEvent",
        "summary": "Delete an event",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "events:write"
            ]
          },
          {
            "bearerAuth": [
              "events:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ]
      }
    },
    "/events/{eventId}/ticket-classes": {
      "get": {
        "operationId": "listTicketClasses",
        "summary": "List ticket classes",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "ticket_classes:read"
            ]
          },
          {
            "bearerAuth": [
              "ticket_classes:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      },
      "post": {
        "operationId": "createTicketClass",
        "summary": "Create a ticket class",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "ticket_classes:write"
            ]
          },
          {
            "bearerAuth": [
              "ticket_classes:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/events/{eventId}/ticket-classes/{ticketClassId}": {
      "get": {
        "operationId": "getTicketClass",
        "summary": "Retrieve a ticket class",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "ticket_classes:read"
            ]
          },
          {
            "bearerAuth": [
              "ticket_classes:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "ticketClassId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the ticketClass."
          }
        ]
      },
      "patch": {
        "operationId": "updateTicketClass",
        "summary": "Update a ticket class",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "ticket_classes:write"
            ]
          },
          {
            "bearerAuth": [
              "ticket_classes:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "ticketClassId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the ticketClass."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteTicketClass",
        "summary": "Delete a ticket class",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "ticket_classes:write"
            ]
          },
          {
            "bearerAuth": [
              "ticket_classes:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "ticketClassId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the ticketClass."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ]
      }
    },
    "/events/{eventId}/attendees": {
      "get": {
        "operationId": "listAttendees",
        "summary": "List attendees",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "attendees:read"
            ]
          },
          {
            "bearerAuth": [
              "attendees:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      },
      "post": {
        "operationId": "createAttendee",
        "summary": "Register an attendee",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "attendees:write"
            ]
          },
          {
            "bearerAuth": [
              "attendees:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/events/{eventId}/attendees/{attendeeId}": {
      "get": {
        "operationId": "getAttendee",
        "summary": "Retrieve an attendee",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "attendees:read"
            ]
          },
          {
            "bearerAuth": [
              "attendees:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "attendeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the attendee."
          }
        ]
      },
      "patch": {
        "operationId": "updateAttendee",
        "summary": "Update an attendee",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "attendees:write"
            ]
          },
          {
            "bearerAuth": [
              "attendees:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "attendeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the attendee."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteAttendee",
        "summary": "Cancel an attendee",
        "tags": [
          "events"
        ],
        "security": [
          {
            "apiKey": [
              "attendees:write"
            ]
          },
          {
            "bearerAuth": [
              "attendees:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          },
          {
            "name": "attendeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the attendee."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ]
      }
    },
    "/contacts": {
      "get": {
        "operationId": "listContacts",
        "summary": "List contacts",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "apiKey": [
              "contacts:read"
            ]
          },
          {
            "bearerAuth": [
              "contacts:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      },
      "post": {
        "operationId": "createContact",
        "summary": "Create a contact",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "apiKey": [
              "contacts:write"
            ]
          },
          {
            "bearerAuth": [
              "contacts:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/contacts/{contactId}": {
      "get": {
        "operationId": "getContact",
        "summary": "Retrieve a contact",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "apiKey": [
              "contacts:read"
            ]
          },
          {
            "bearerAuth": [
              "contacts:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the contact."
          }
        ]
      },
      "patch": {
        "operationId": "updateContact",
        "summary": "Update a contact",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "apiKey": [
              "contacts:write"
            ]
          },
          {
            "bearerAuth": [
              "contacts:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the contact."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteContact",
        "summary": "Delete a contact",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "apiKey": [
              "contacts:write"
            ]
          },
          {
            "bearerAuth": [
              "contacts:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the contact."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ]
      }
    },
    "/contacts/{contactId}/applications": {
      "get": {
        "operationId": "listContactApplications",
        "summary": "List a contact's applications",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "apiKey": [
              "contacts:read",
              "applications:read"
            ]
          },
          {
            "bearerAuth": [
              "contacts:read",
              "applications:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the contact."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      }
    },
    "/applications": {
      "get": {
        "operationId": "listApplications",
        "summary": "List applications",
        "tags": [
          "applications"
        ],
        "security": [
          {
            "apiKey": [
              "applications:read"
            ]
          },
          {
            "bearerAuth": [
              "applications:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      }
    },
    "/applications/{applicationId}": {
      "get": {
        "operationId": "getApplication",
        "summary": "Retrieve an application",
        "tags": [
          "applications"
        ],
        "security": [
          {
            "apiKey": [
              "applications:read"
            ]
          },
          {
            "bearerAuth": [
              "applications:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "applicationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the application."
          }
        ]
      },
      "patch": {
        "operationId": "updateApplication",
        "summary": "Approve or decline an application",
        "tags": [
          "applications"
        ],
        "security": [
          {
            "apiKey": [
              "applications:write"
            ]
          },
          {
            "bearerAuth": [
              "applications:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "applicationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the application."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/experiences": {
      "get": {
        "operationId": "listExperiences",
        "summary": "List experiences",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "apiKey": [
              "experiences:read"
            ]
          },
          {
            "bearerAuth": [
              "experiences:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      },
      "post": {
        "operationId": "createExperience",
        "summary": "Create an experience",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "apiKey": [
              "experiences:write"
            ]
          },
          {
            "bearerAuth": [
              "experiences:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/experiences/{experienceId}": {
      "get": {
        "operationId": "getExperience",
        "summary": "Retrieve an experience",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "apiKey": [
              "experiences:read"
            ]
          },
          {
            "bearerAuth": [
              "experiences:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "experienceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the experience."
          }
        ]
      },
      "patch": {
        "operationId": "updateExperience",
        "summary": "Update an experience",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "apiKey": [
              "experiences:write"
            ]
          },
          {
            "bearerAuth": [
              "experiences:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "experienceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the experience."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteExperience",
        "summary": "Delete an experience",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "apiKey": [
              "experiences:write"
            ]
          },
          {
            "bearerAuth": [
              "experiences:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "experienceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the experience."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ]
      }
    },
    "/experiences/{experienceId}/recurrences": {
      "get": {
        "operationId": "listRecurrences",
        "summary": "List recurrences",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "apiKey": [
              "experiences:read"
            ]
          },
          {
            "bearerAuth": [
              "experiences:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "experienceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the experience."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      },
      "post": {
        "operationId": "createRecurrence",
        "summary": "Create a recurrence",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "apiKey": [
              "experiences:write"
            ]
          },
          {
            "bearerAuth": [
              "experiences:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "experienceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the experience."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/experiences/{experienceId}/recurrences/{recurrenceId}": {
      "get": {
        "operationId": "getRecurrence",
        "summary": "Retrieve a recurrence",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "apiKey": [
              "experiences:read"
            ]
          },
          {
            "bearerAuth": [
              "experiences:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "experienceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the experience."
          },
          {
            "name": "recurrenceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the recurrence."
          }
        ]
      },
      "patch": {
        "operationId": "updateRecurrence",
        "summary": "Update a recurrence",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "apiKey": [
              "experiences:write"
            ]
          },
          {
            "bearerAuth": [
              "experiences:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "experienceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the experience."
          },
          {
            "name": "recurrenceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the recurrence."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteRecurrence",
        "summary": "Delete a recurrence",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "apiKey": [
              "experiences:write"
            ]
          },
          {
            "bearerAuth": [
              "experiences:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "experienceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the experience."
          },
          {
            "name": "recurrenceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the recurrence."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ]
      }
    },
    "/organization": {
      "get": {
        "operationId": "getOrganization",
        "summary": "Retrieve the API key's organization and scopes",
        "tags": [
          "organization"
        ],
        "security": [
          {
            "apiKey": []
          },
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/webhooks": {
      "get": {
        "operationId": "listWebhooks",
        "summary": "List webhook subscriptions",
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "apiKey": []
          },
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "post": {
        "operationId": "createWebhook",
        "summary": "Subscribe a URL to an event",
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "apiKey": []
          },
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/webhooks/samples": {
      "get": {
        "operationId": "listWebhookSamples",
        "summary": "Recent events in the delivered webhook shape",
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "apiKey": []
          },
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "event",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "attendee.registered",
                "form_response.created",
                "form_response.updated"
              ]
            },
            "description": "Event type (required)."
          },
          {
            "name": "event_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "attendee.registered only: one event."
          },
          {
            "name": "form_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "form_response.* only: one form."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 3,
              "default": 3
            },
            "description": "How many samples."
          }
        ]
      }
    },
    "/webhooks/{webhookId}": {
      "get": {
        "operationId": "getWebhook",
        "summary": "Retrieve a webhook subscription",
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "apiKey": []
          },
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the webhook."
          }
        ]
      },
      "delete": {
        "operationId": "deleteWebhook",
        "summary": "Unsubscribe",
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "apiKey": []
          },
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the webhook."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ]
      }
    },
    "/spaces": {
      "get": {
        "operationId": "listSpaces",
        "summary": "List spaces",
        "tags": [
          "spaces"
        ],
        "security": [
          {
            "apiKey": [
              "spaces:read"
            ]
          },
          {
            "bearerAuth": [
              "spaces:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      },
      "post": {
        "operationId": "createSpace",
        "summary": "Create a space",
        "tags": [
          "spaces"
        ],
        "security": [
          {
            "apiKey": [
              "spaces:write"
            ]
          },
          {
            "bearerAuth": [
              "spaces:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/spaces/{spaceIdentifier}": {
      "get": {
        "operationId": "getSpace",
        "summary": "Retrieve a space",
        "tags": [
          "spaces"
        ],
        "security": [
          {
            "apiKey": [
              "spaces:read"
            ]
          },
          {
            "bearerAuth": [
              "spaces:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "spaceIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the space."
          }
        ]
      },
      "patch": {
        "operationId": "updateSpace",
        "summary": "Update a space",
        "tags": [
          "spaces"
        ],
        "security": [
          {
            "apiKey": [
              "spaces:write"
            ]
          },
          {
            "bearerAuth": [
              "spaces:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "spaceIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the space."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/spaces/{spaceIdentifier}/tax-details": {
      "put": {
        "operationId": "updateSpaceTaxDetails",
        "summary": "Replace a space tax details",
        "tags": [
          "spaces"
        ],
        "security": [
          {
            "apiKey": [
              "spaces:write"
            ]
          },
          {
            "bearerAuth": [
              "spaces:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "spaceIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the space."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/lists": {
      "get": {
        "operationId": "listLists",
        "summary": "List contact lists",
        "tags": [
          "lists"
        ],
        "security": [
          {
            "apiKey": [
              "lists:read"
            ]
          },
          {
            "bearerAuth": [
              "lists:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      }
    },
    "/lists/{listId}": {
      "get": {
        "operationId": "getList",
        "summary": "Retrieve a contact list",
        "tags": [
          "lists"
        ],
        "security": [
          {
            "apiKey": [
              "lists:read"
            ]
          },
          {
            "bearerAuth": [
              "lists:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the list."
          }
        ]
      }
    },
    "/lists/{listId}/contacts": {
      "get": {
        "operationId": "listListContacts",
        "summary": "List contacts in a list",
        "tags": [
          "lists"
        ],
        "security": [
          {
            "apiKey": [
              "lists:read",
              "contacts:read"
            ]
          },
          {
            "bearerAuth": [
              "lists:read",
              "contacts:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the list."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      }
    },
    "/forms": {
      "get": {
        "operationId": "listForms",
        "summary": "List forms",
        "tags": [
          "forms"
        ],
        "security": [
          {
            "apiKey": [
              "forms:read"
            ]
          },
          {
            "bearerAuth": [
              "forms:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      }
    },
    "/forms/{formId}": {
      "get": {
        "operationId": "getForm",
        "summary": "Retrieve a form",
        "tags": [
          "forms"
        ],
        "security": [
          {
            "apiKey": [
              "forms:read"
            ]
          },
          {
            "bearerAuth": [
              "forms:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "formId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the form."
          }
        ]
      }
    },
    "/custom-fields": {
      "get": {
        "operationId": "listCustomFields",
        "summary": "List custom fields",
        "tags": [
          "custom-fields"
        ],
        "security": [
          {
            "apiKey": [
              "custom_fields:read"
            ]
          },
          {
            "bearerAuth": [
              "custom_fields:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      }
    },
    "/custom-fields/{fieldId}": {
      "get": {
        "operationId": "getCustomField",
        "summary": "Retrieve a custom field",
        "tags": [
          "custom-fields"
        ],
        "security": [
          {
            "apiKey": [
              "custom_fields:read"
            ]
          },
          {
            "bearerAuth": [
              "custom_fields:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "fieldId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the field."
          }
        ]
      }
    },
    "/payments": {
      "get": {
        "operationId": "listPayments",
        "summary": "List payments",
        "tags": [
          "payments"
        ],
        "security": [
          {
            "apiKey": [
              "payments:read"
            ]
          },
          {
            "bearerAuth": [
              "payments:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ]
      }
    },
    "/payments/{paymentId}": {
      "get": {
        "operationId": "getPayment",
        "summary": "Retrieve a payment",
        "tags": [
          "payments"
        ],
        "security": [
          {
            "apiKey": [
              "payments:read"
            ]
          },
          {
            "bearerAuth": [
              "payments:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "paymentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the payment."
          }
        ]
      }
    },
    "/catalog/events": {
      "get": {
        "operationId": "listCatalogEvents",
        "summary": "List catalog events across organizations",
        "tags": [
          "catalog"
        ],
        "security": [
          {
            "apiKey": [
              "catalog:read"
            ]
          },
          {
            "bearerAuth": [
              "catalog:read"
            ]
          },
          {
            "agentCredential": []
          },
          {
            "signedInAgent": [
              "checkout:write"
            ]
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "description": "Events per page."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Pass `pagination.next_cursor` from the previous page verbatim. Stop when `next_cursor` is null. A page may hold fewer than `limit` events and still have more after it."
          },
          {
            "name": "city",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 120
            },
            "description": "Venue city, case-insensitive substring (`San Francisco`, `berlin`)."
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 120
            },
            "description": "Venue country name or ISO code, case-insensitive (`US`, `Italy`)."
          },
          {
            "name": "starts_after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Only events starting at or after this instant. ISO date (`2026-10-12`, read as midnight UTC) or datetime with an offset (`2026-10-12T00:00:00-07:00`)."
          },
          {
            "name": "starts_before",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Only events starting at or before this instant. Same formats as `starts_after`. For \"next week\" pass the Monday and the following Monday."
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 200
            },
            "description": "A keyword or phrase (\"49ers\", \"jazz in Lisbon\"). A relevance search with the same engine the site uses (name, venue, organizer, categories, description, plus semantic matches), not a substring filter. Results come back ranked rather than by end time; the other filters apply inside the ranked list, and `has_more` is true only while ranked results remain, so a keyword page is never empty with a cursor. A cursor is bound to its `q`."
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]{3}$"
            },
            "description": "ISO 4217 code. Required with `min_price` / `max_price`; prices are not converted."
          },
          {
            "name": "min_price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "description": "Lowest \"from\" price, in `currency`. Events with no known price are excluded."
          },
          {
            "name": "max_price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "description": "Highest \"from\" price, in `currency`. Events with no known price are excluded."
          },
          {
            "name": "is_free",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Only free (`true`) or only paid (`false`) events. Unknown prices match neither."
          }
        ]
      }
    },
    "/catalog/events/{eventId}": {
      "get": {
        "operationId": "getCatalogEvent",
        "summary": "Retrieve a catalog event",
        "tags": [
          "catalog"
        ],
        "security": [
          {
            "apiKey": [
              "catalog:read"
            ]
          },
          {
            "bearerAuth": [
              "catalog:read"
            ]
          },
          {
            "agentCredential": []
          },
          {
            "signedInAgent": [
              "checkout:write"
            ]
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the event."
          }
        ]
      }
    },
    "/catalog/feed": {
      "get": {
        "operationId": "getCatalogFeed",
        "summary": "Retrieve the product feed",
        "tags": [
          "catalog"
        ],
        "security": [
          {
            "apiKey": [
              "catalog:read"
            ]
          },
          {
            "bearerAuth": [
              "catalog:read"
            ]
          },
          {
            "agentCredential": []
          },
          {
            "signedInAgent": [
              "checkout:write"
            ]
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/uploads/images": {
      "post": {
        "operationId": "uploadImage",
        "summary": "Upload an image",
        "tags": [
          "uploads"
        ],
        "security": [
          {
            "apiKey": []
          },
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/checkout_sessions": {
      "post": {
        "operationId": "createCheckoutSession",
        "summary": "Create and price a checkout session",
        "tags": [
          "checkout_sessions"
        ],
        "security": [
          {
            "apiKey": [
              "checkout:write"
            ]
          },
          {
            "bearerAuth": [
              "checkout:write"
            ]
          },
          {
            "agentCredential": [
              "checkout:write"
            ]
          },
          {
            "signedInAgent": [
              "checkout:write"
            ]
          },
          {}
        ],
        "responses": {
          "201": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSession"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AcpBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/AcpUnauthorized"
          },
          "402": {
            "$ref": "#/components/responses/AcpPaymentRequired"
          },
          "404": {
            "$ref": "#/components/responses/AcpNotFound"
          },
          "409": {
            "$ref": "#/components/responses/AcpConflict"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/AcpProcessingError"
          },
          "503": {
            "$ref": "#/components/responses/AcpUnavailable"
          }
        },
        "externalDocs": {
          "url": "https://developers.openai.com/commerce/specs/checkout",
          "description": "The ACP checkout spec these bodies conform to"
        },
        "parameters": [
          {
            "name": "API-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2025-09-12"
              ]
            },
            "description": "The ACP version this deployment implements. Must be `2025-09-12`."
          },
          {
            "name": "Request-Id",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Echoed back on successes AND failures, for correlating a retry."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/checkout_sessions/{checkoutSessionId}": {
      "get": {
        "operationId": "getCheckoutSession",
        "summary": "Retrieve a checkout session",
        "tags": [
          "checkout_sessions"
        ],
        "security": [
          {
            "apiKey": [
              "checkout:write"
            ]
          },
          {
            "bearerAuth": [
              "checkout:write"
            ]
          },
          {
            "agentCredential": [
              "checkout:write"
            ]
          },
          {
            "signedInAgent": [
              "checkout:write"
            ]
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSession"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AcpBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/AcpUnauthorized"
          },
          "402": {
            "$ref": "#/components/responses/AcpPaymentRequired"
          },
          "404": {
            "$ref": "#/components/responses/AcpNotFound"
          },
          "409": {
            "$ref": "#/components/responses/AcpConflict"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/AcpProcessingError"
          },
          "503": {
            "$ref": "#/components/responses/AcpUnavailable"
          }
        },
        "externalDocs": {
          "url": "https://developers.openai.com/commerce/specs/checkout",
          "description": "The ACP checkout spec these bodies conform to"
        },
        "parameters": [
          {
            "name": "checkoutSessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the checkoutSession."
          },
          {
            "name": "API-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2025-09-12"
              ]
            },
            "description": "The ACP version this deployment implements. Must be `2025-09-12`."
          },
          {
            "name": "Request-Id",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Echoed back on successes AND failures, for correlating a retry."
          }
        ]
      },
      "post": {
        "operationId": "updateCheckoutSession",
        "summary": "Update a checkout session cart",
        "tags": [
          "checkout_sessions"
        ],
        "security": [
          {
            "apiKey": [
              "checkout:write"
            ]
          },
          {
            "bearerAuth": [
              "checkout:write"
            ]
          },
          {
            "agentCredential": [
              "checkout:write"
            ]
          },
          {
            "signedInAgent": [
              "checkout:write"
            ]
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSession"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AcpBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/AcpUnauthorized"
          },
          "402": {
            "$ref": "#/components/responses/AcpPaymentRequired"
          },
          "404": {
            "$ref": "#/components/responses/AcpNotFound"
          },
          "409": {
            "$ref": "#/components/responses/AcpConflict"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/AcpProcessingError"
          },
          "503": {
            "$ref": "#/components/responses/AcpUnavailable"
          }
        },
        "externalDocs": {
          "url": "https://developers.openai.com/commerce/specs/checkout",
          "description": "The ACP checkout spec these bodies conform to"
        },
        "parameters": [
          {
            "name": "checkoutSessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the checkoutSession."
          },
          {
            "name": "API-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2025-09-12"
              ]
            },
            "description": "The ACP version this deployment implements. Must be `2025-09-12`."
          },
          {
            "name": "Request-Id",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Echoed back on successes AND failures, for correlating a retry."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/checkout_sessions/{checkoutSessionId}/complete": {
      "post": {
        "operationId": "completeCheckoutSession",
        "summary": "Pay with a delegated payment token (none for a free order) and issue tickets",
        "tags": [
          "checkout_sessions"
        ],
        "security": [
          {
            "apiKey": [
              "checkout:write"
            ]
          },
          {
            "bearerAuth": [
              "checkout:write"
            ]
          },
          {
            "agentCredential": [
              "checkout:write"
            ]
          },
          {
            "signedInAgent": [
              "checkout:write"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSession"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AcpBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/AcpUnauthorized"
          },
          "402": {
            "$ref": "#/components/responses/AcpPaymentRequired"
          },
          "404": {
            "$ref": "#/components/responses/AcpNotFound"
          },
          "409": {
            "$ref": "#/components/responses/AcpConflict"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/AcpProcessingError"
          },
          "503": {
            "$ref": "#/components/responses/AcpUnavailable"
          }
        },
        "externalDocs": {
          "url": "https://developers.openai.com/commerce/specs/checkout",
          "description": "The ACP checkout spec these bodies conform to"
        },
        "parameters": [
          {
            "name": "checkoutSessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the checkoutSession."
          },
          {
            "name": "API-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2025-09-12"
              ]
            },
            "description": "The ACP version this deployment implements. Must be `2025-09-12`."
          },
          {
            "name": "Request-Id",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Echoed back on successes AND failures, for correlating a retry."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/checkout_sessions/{checkoutSessionId}/payment_link": {
      "post": {
        "operationId": "createCheckoutPaymentLink",
        "summary": "Get a hosted page the buyer pays on (card, Apple Pay, Google Pay; no Gomry account), for agents without a payment token. Tickets are issued when the buyer pays",
        "tags": [
          "checkout_sessions"
        ],
        "security": [
          {
            "apiKey": [
              "checkout:write"
            ]
          },
          {
            "bearerAuth": [
              "checkout:write"
            ]
          },
          {
            "agentCredential": [
              "checkout:write"
            ]
          },
          {
            "signedInAgent": [
              "checkout:write"
            ]
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSession"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AcpBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/AcpUnauthorized"
          },
          "402": {
            "$ref": "#/components/responses/AcpPaymentRequired"
          },
          "404": {
            "$ref": "#/components/responses/AcpNotFound"
          },
          "409": {
            "$ref": "#/components/responses/AcpConflict"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/AcpProcessingError"
          },
          "503": {
            "$ref": "#/components/responses/AcpUnavailable"
          }
        },
        "externalDocs": {
          "url": "https://developers.openai.com/commerce/specs/checkout",
          "description": "The ACP checkout spec these bodies conform to"
        },
        "parameters": [
          {
            "name": "checkoutSessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the checkoutSession."
          },
          {
            "name": "API-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2025-09-12"
              ]
            },
            "description": "The ACP version this deployment implements. Must be `2025-09-12`."
          },
          {
            "name": "Request-Id",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Echoed back on successes AND failures, for correlating a retry."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "See https://docs.gomry.com for the full field list."
              }
            }
          }
        }
      }
    },
    "/checkout_sessions/{checkoutSessionId}/cancel": {
      "post": {
        "operationId": "cancelCheckoutSession",
        "summary": "Abandon a checkout session before payment",
        "tags": [
          "checkout_sessions"
        ],
        "security": [
          {
            "apiKey": [
              "checkout:write"
            ]
          },
          {
            "bearerAuth": [
              "checkout:write"
            ]
          },
          {
            "agentCredential": [
              "checkout:write"
            ]
          },
          {
            "signedInAgent": [
              "checkout:write"
            ]
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "RateLimit-Limit": {
                "description": "Requests permitted in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSession"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AcpBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/AcpUnauthorized"
          },
          "402": {
            "$ref": "#/components/responses/AcpPaymentRequired"
          },
          "404": {
            "$ref": "#/components/responses/AcpNotFound"
          },
          "409": {
            "$ref": "#/components/responses/AcpConflict"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/AcpProcessingError"
          },
          "503": {
            "$ref": "#/components/responses/AcpUnavailable"
          }
        },
        "externalDocs": {
          "url": "https://developers.openai.com/commerce/specs/checkout",
          "description": "The ACP checkout spec these bodies conform to"
        },
        "parameters": [
          {
            "name": "checkoutSessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the checkoutSession."
          },
          {
            "name": "API-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2025-09-12"
              ]
            },
            "description": "The ACP version this deployment implements. Must be `2025-09-12`."
          },
          {
            "name": "Request-Id",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Echoed back on successes AND failures, for correlating a retry."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-KEY",
        "description": "Organization-scoped API key created in Organization Settings."
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "The same organization-scoped API key, sent as `Authorization: Bearer <key>`."
      },
      "agentCredential": {
        "type": "oauth2",
        "description": "For agents, no human needed. Register at `POST /api/mcp/oauth/register` with `{\"client_name\": \"<your name>\", \"grant_types\": [\"client_credentials\"]}` (no `redirect_uris`), then exchange the returned `client_id` and `client_secret` at the token URL. Tokens last 15 minutes; request a new one with the same secret. The token is issued as `checkout:write` and also reads the catalog (`/catalog/*`). Every other endpoint answers 403. See `/auth.md`.",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://www.gomry.com/api/mcp/oauth/token",
            "scopes": {
              "checkout:write": "Buy tickets through ACP checkout. Catalog read access comes with it."
            }
          }
        },
        "x-registration-endpoint": "https://www.gomry.com/api/mcp/oauth/register"
      },
      "signedInAgent": {
        "type": "oauth2",
        "description": "For agents acting for a person who can sign in, when the agent cannot send a client secret. Run the authorization-code flow with PKCE (register a public client at `POST /api/mcp/oauth/register` with `redirect_uris`) and request `mcp checkout:write`. The access token reaches the catalog and checkout, and purchases are made as the signed-in person. Every other endpoint answers 403. See `/auth.md`.",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://www.gomry.com/api/mcp/oauth/authorize",
            "tokenUrl": "https://www.gomry.com/api/mcp/oauth/token",
            "refreshUrl": "https://www.gomry.com/api/mcp/oauth/token",
            "scopes": {
              "checkout:write": "Buy tickets for the signed-in person. Catalog read access comes with it."
            }
          }
        },
        "x-registration-endpoint": "https://www.gomry.com/api/mcp/oauth/register"
      }
    },
    "schemas": {
      "CursorPage": {
        "type": "object",
        "required": [
          "data",
          "pagination"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "pagination": {
            "type": "object",
            "required": [
              "next_cursor",
              "has_more"
            ],
            "properties": {
              "next_cursor": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Opaque. Null is the only end-of-results signal."
              },
              "has_more": {
                "type": "boolean"
              }
            }
          }
        }
      },
      "PaginatedResponse": {
        "type": "object",
        "required": [
          "data",
          "pagination"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "pagination": {
            "type": "object",
            "required": [
              "total",
              "page",
              "page_size",
              "total_pages"
            ],
            "properties": {
              "total": {
                "type": "integer"
              },
              "page": {
                "type": "integer"
              },
              "page_size": {
                "type": "integer"
              },
              "total_pages": {
                "type": "integer"
              }
            }
          }
        }
      },
      "CheckoutSession": {
        "type": "object",
        "description": "An ACP checkout session (`API-Version: 2025-09-12`). Full field list: https://developers.openai.com/commerce/specs/checkout. Gomry-specific notes are in the properties below.",
        "required": [
          "id",
          "status",
          "currency",
          "line_items",
          "totals"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "not_ready_for_payment",
              "ready_for_payment",
              "completed",
              "canceled"
            ],
            "description": "⚠️ `completed` means the money was taken and Gomry owns the obligation — NOT that the buyer holds a ticket. For partner-supplied seats the ticket is issued after payment. Read the ORDER status from the webhook: `confirmed` on the order is the only signal that the buyer has their ticket."
          },
          "currency": {
            "type": "string"
          },
          "line_items": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "`line_items[].id` is a LINE id, not an item id — two lines of the same ticket type have different line ids. `item.id` is the ticket type."
          },
          "totals": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "The authoritative price, including the service fee. Never compute a total from catalog fields."
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Anything blocking payment appears here as a `type: \"error\"` message with a spec `code`. Read `status` for the decision and this for the reason."
          },
          "fulfillment_options": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Exactly one option, already selected — no extra update call is needed. Its `title`/`subtitle` say how the seats actually reach the buyer."
          }
        }
      },
      "AcpError": {
        "type": "object",
        "required": [
          "type",
          "code",
          "message"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "invalid_request",
              "processing_error",
              "service_unavailable"
            ],
            "description": "The error class. `code` is the specific cause."
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_body",
              "invalid_header",
              "invalid_signature",
              "unsupported_api_version",
              "authentication_required",
              "session_not_found",
              "invalid_session_state",
              "item_not_found",
              "multiple_events",
              "sold_out",
              "quantity_limit_exceeded",
              "not_on_sale",
              "payment_declined",
              "amount_mismatch",
              "currency_mismatch",
              "payment_requires_action",
              "idempotent_request_in_progress",
              "rate_limit_exceeded",
              "temporarily_unavailable",
              "internal_error"
            ],
            "description": "The specific cause. Enumerated from the server's own code table, so this list cannot drift from what the surface can return."
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation. Do not parse."
          },
          "param": {
            "type": "string",
            "description": "JSONPath to the offending field, e.g. `$.items[0].quantity`. Present only when the failure is attributable to one input."
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "Error identifier. Handlers migrated to the typed model return one of the snake_case codes listed under `x-error-codes`; the remainder still return a human-readable sentence. Treat an unrecognised value as a generic failure for the HTTP status, and prefer the status code where you need to branch reliably."
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation. Subject to change; do not parse."
          },
          "required_scope": {
            "type": "string",
            "description": "Present on scope failures, e.g. `events:write`."
          },
          "retry_after": {
            "type": "integer",
            "description": "Present on `rate_limit_exceeded`. Seconds to wait before retrying; mirrors the `Retry-After` header."
          }
        }
      }
    },
    "responses": {
      "BadRequest": {
        "description": "The request was malformed or failed validation.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Missing or invalid API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Forbidden": {
        "description": "The key lacks the required scope.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "NotFound": {
        "description": "No such resource in this organization.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "RateLimited": {
        "description": "Rate limit exceeded (60 requests per 10 seconds per key).",
        "headers": {
          "RateLimit-Limit": {
            "description": "Requests permitted in the current window.",
            "schema": {
              "type": "integer"
            }
          },
          "RateLimit-Remaining": {
            "description": "Requests remaining in the current window.",
            "schema": {
              "type": "integer"
            }
          },
          "RateLimit-Reset": {
            "description": "Seconds until the current window resets.",
            "schema": {
              "type": "integer"
            }
          },
          "Retry-After": {
            "description": "Seconds to wait before retrying.",
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "InternalError": {
        "description": "Unexpected server error. Safe to retry with the same `Idempotency-Key`.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "AcpBadRequest": {
        "description": "Malformed request. The body is strict — an unknown field is rejected, not dropped. `code` names which: `invalid_body`, `item_not_found`, `multiple_events`, `currency_mismatch`, `unsupported_api_version`.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AcpError"
            }
          }
        }
      },
      "AcpUnauthorized": {
        "description": "No usable credential, or a `Signature` that did not verify. ⚠️ Omit the `Signature` header entirely unless Gomry issued you a signing secret — an unverifiable signature is rejected rather than ignored.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AcpError"
            }
          }
        }
      },
      "AcpPaymentRequired": {
        "description": "`payment_declined` — the delegated token could not be charged (expired, already used, over its granted amount, or issued for another account). Mint a fresh token; do NOT retry the same one. Also `payment_requires_action`, when the card wants a 3-D Secure challenge there is no buyer present to answer.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AcpError"
            }
          }
        }
      },
      "AcpNotFound": {
        "description": "`session_not_found`. A session is only ever visible to the credential that created it.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AcpError"
            }
          }
        }
      },
      "AcpConflict": {
        "description": "The request was well-formed and the world changed: `sold_out`, `not_on_sale`, `quantity_limit_exceeded`, `invalid_session_state`, `amount_mismatch`, or `idempotent_request_in_progress`. Re-read availability rather than \"fixing\" the request. ⚠️ `amount_mismatch` means the total moved — we refuse rather than charge a price you did not quote your buyer.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AcpError"
            }
          }
        }
      },
      "AcpProcessingError": {
        "description": "`internal_error`. ⚠️ Re-read the session with `GET` before retrying a `complete` — the charge is keyed on the session, so the first attempt may have succeeded.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AcpError"
            }
          }
        }
      },
      "AcpUnavailable": {
        "description": "`temporarily_unavailable` — a dependency could not be reached. Retry, honouring `Retry-After`. ⚠️ NOT the same as sold out: treating it as a sell-out sends a buyer away from an event that is in stock.",
        "headers": {
          "Retry-After": {
            "description": "Seconds to wait before retrying.",
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AcpError"
            }
          }
        }
      }
    }
  },
  "x-scopes": {
    "events:read": "Read events.",
    "events:write": "Read and write events.",
    "attendees:read": "Read attendees.",
    "attendees:write": "Read and write attendees.",
    "ticket_classes:read": "Read ticket classes.",
    "ticket_classes:write": "Read and write ticket classes.",
    "contacts:read": "Read contacts.",
    "contacts:write": "Read and write contacts.",
    "applications:read": "Read applications.",
    "applications:write": "Read and write applications.",
    "forms:read": "Read forms.",
    "lists:read": "Read lists.",
    "custom_fields:read": "Read custom fields.",
    "payments:read": "Read payments.",
    "experiences:read": "Read experiences.",
    "experiences:write": "Read and write experiences.",
    "spaces:read": "Read spaces.",
    "spaces:write": "Read and write spaces.",
    "catalog:read": "Read catalog.",
    "checkout:write": "Read and write checkout."
  },
  "x-error-codes": {
    "invalid_request": "The request was malformed or failed schema validation.",
    "invalid_cursor": "The supplied pagination cursor is not valid.",
    "insufficient_scope": "The API key lacks the scope named in `required_scope`.",
    "rate_limit_exceeded": "Rate limit exceeded; see `retry_after` and the `Retry-After` header.",
    "idempotent_request_in_progress": "A request with this `Idempotency-Key` is still in flight.",
    "cannot_delete": "The resource cannot be deleted in its current state.",
    "upgrade_failed": "The ticket upgrade could not be applied.",
    "processing_error": "The request was accepted but could not be processed.",
    "internal_error": "Unexpected server error."
  },
  "x-acp": {
    "version": "2025-09-12",
    "spec_url": "https://developers.openai.com/commerce/specs/checkout",
    "scope": "checkout:write",
    "unattended_credential": {
      "register": "/api/mcp/oauth/register",
      "token": "/api/mcp/oauth/token",
      "grant_type": "client_credentials",
      "documentation": "/auth.md"
    },
    "inventory_discovery": {
      "credential_free": [
        "/ask",
        "/event/{slug}.md"
      ],
      "with_catalog_scope": [
        "/catalog/events",
        "/catalog/events/{eventId}",
        "/catalog/feed"
      ],
      "unattended_credential_reads_catalog": true
    },
    "signature_required": false,
    "payment": {
      "token_type": "stripe_shared_payment_token",
      "provider": "stripe",
      "card_data_accepted": false,
      "network_profile_id_documented_at": "/auth.md",
      "network_profile_id_per_session": "payment_provider.network_profile_id"
    },
    "error_status": {
      "invalid_body": 400,
      "invalid_header": 400,
      "invalid_signature": 401,
      "unsupported_api_version": 400,
      "authentication_required": 401,
      "session_not_found": 404,
      "invalid_session_state": 409,
      "item_not_found": 400,
      "multiple_events": 400,
      "sold_out": 409,
      "quantity_limit_exceeded": 409,
      "not_on_sale": 409,
      "payment_declined": 402,
      "amount_mismatch": 409,
      "currency_mismatch": 400,
      "payment_requires_action": 402,
      "idempotent_request_in_progress": 409,
      "rate_limit_exceeded": 429,
      "temporarily_unavailable": 503,
      "internal_error": 500
    }
  },
  "x-deprecation-policy": {
    "versioning": "url",
    "current_version": "v1",
    "breaking_changes": "Ship as a new version path; an existing version is never altered in place.",
    "additive_changes": "Ship within the current version. Clients must ignore unknown response fields.",
    "notice_headers": [
      "Deprecation",
      "Sunset",
      "Link"
    ],
    "minimum_notice_days": 180,
    "policy_url": "https://docs.gomry.com/api/versioning"
  }
}