{
  "openapi": "3.1.0",
  "info": {
    "title": "Gomry API for personal agents",
    "version": "1.0.0",
    "summary": "Find events, buy tickets, manage the person's own tickets and, for an organizer, their events.",
    "description": "The part of the Gomry REST API a Personal Agent Protocol agent can use: the public event catalog, where enabled Agentic Commerce Protocol checkout, and once signed in the person's own tickets and orders (`/me`) and, for an organizer, the organization operations their role allows. Discovery: https://www.gomry.com/.well-known/poppy.json. Payment is always a delegated payment token from the agent's own provider (`payment_data.token`); no card data is accepted. Free tickets need none.",
    "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `events:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `events:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `events:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      },
      "patch": {
        "operationId": "updateEvent",
        "summary": "Update an event",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `events:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `events:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `ticket_classes:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `ticket_classes:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `ticket_classes:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      },
      "patch": {
        "operationId": "updateTicketClass",
        "summary": "Update a ticket class",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `ticket_classes:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `ticket_classes:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `attendees:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `attendees:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `attendees:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      },
      "patch": {
        "operationId": "updateAttendee",
        "summary": "Update an attendee",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `attendees:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `attendees:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "events"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `contacts:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `contacts:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `contacts:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      },
      "patch": {
        "operationId": "updateContact",
        "summary": "Update a contact",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `contacts:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `contacts:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `contacts:read`, `applications:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "contacts"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `applications:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "applications"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `applications:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "applications"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      },
      "patch": {
        "operationId": "updateApplication",
        "summary": "Approve or decline an application",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `applications:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "applications"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `experiences:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `experiences:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `experiences:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      },
      "patch": {
        "operationId": "updateExperience",
        "summary": "Update an experience",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `experiences:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `experiences:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `experiences:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `experiences:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `experiences:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      },
      "patch": {
        "operationId": "updateRecurrence",
        "summary": "Update a recurrence",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `experiences:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `experiences:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "experiences"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `spaces:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "spaces"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `spaces:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "spaces"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `spaces:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "spaces"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      },
      "patch": {
        "operationId": "updateSpace",
        "summary": "Update a space",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `spaces:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "spaces"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization (it needs `spaces:write`, granted from that role). Organization-wide members only.",
        "tags": [
          "spaces"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `lists:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "lists"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `lists:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "lists"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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."
          },
          {
            "name": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      }
    },
    "/lists/{listId}/contacts": {
      "get": {
        "operationId": "listListContacts",
        "summary": "List contacts in a list",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `lists:read`, `contacts:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "lists"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `forms:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "forms"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `forms:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "forms"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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."
          },
          {
            "name": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      }
    },
    "/custom-fields": {
      "get": {
        "operationId": "listCustomFields",
        "summary": "List custom fields",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `custom_fields:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "custom-fields"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `custom_fields:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "custom-fields"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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."
          },
          {
            "name": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      }
    },
    "/payments": {
      "get": {
        "operationId": "listPayments",
        "summary": "List payments",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `payments:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "payments"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read`, and is limited by the person's role in the organization (it needs `payments:read`, granted from that role). Organization-wide members only.",
        "tags": [
          "payments"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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."
          },
          {
            "name": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          }
        ]
      }
    },
    "/catalog/events": {
      "get": {
        "operationId": "listCatalogEvents",
        "summary": "List catalog events across organizations",
        "tags": [
          "catalog"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Case-insensitive substring of the event name or description."
          },
          {
            "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": [
          {
            "personalAgentSession": []
          }
        ],
        "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": [
          {
            "personalAgentSession": []
          }
        ],
        "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"
          }
        }
      }
    },
    "/me/tickets": {
      "get": {
        "operationId": "listMyTickets",
        "summary": "List the person's tickets",
        "description": "Needs a signed-in Session holding `poppy:read`. Without one: 403 with `WWW-Authenticate: DPoP error=\"sign_in_required\"` or `error=\"insufficient_scope\"` naming the scope.",
        "tags": [
          "me"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "when",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "upcoming",
                "past",
                "all"
              ],
              "default": "upcoming"
            },
            "description": "Upcoming (default; includes events in progress), past, or all."
          }
        ]
      }
    },
    "/me/orders": {
      "get": {
        "operationId": "listMyOrders",
        "summary": "List the person's orders",
        "description": "Needs a signed-in Session holding `poppy:read`. Without one: 403 with `WWW-Authenticate: DPoP error=\"sign_in_required\"` or `error=\"insufficient_scope\"` naming the scope.",
        "tags": [
          "me"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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"
          }
        }
      }
    },
    "/me/tickets/{ticketId}/transfer": {
      "post": {
        "operationId": "transferMyTicket",
        "summary": "Offer the person's ticket to someone else",
        "description": "Needs a signed-in Session holding `poppy:write`. Without one: 403 with `WWW-Authenticate: DPoP error=\"sign_in_required\"` or `error=\"insufficient_scope\"` naming the scope.",
        "tags": [
          "me"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "ticketId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the ticket."
          },
          {
            "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": "cancelMyTicketTransfer",
        "summary": "Cancel a ticket transfer the person offered",
        "description": "Needs a signed-in Session holding `poppy:write`. Without one: 403 with `WWW-Authenticate: DPoP error=\"sign_in_required\"` or `error=\"insufficient_scope\"` naming the scope.",
        "tags": [
          "me"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "ticketId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the ticket."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Replay protection for writes. Replays within 24h return the original response."
          }
        ]
      }
    },
    "/uploads/images": {
      "post": {
        "operationId": "uploadImage",
        "summary": "Upload an image",
        "description": "For an organizer: needs a signed-in Session holding `poppy:read` and `poppy:write`, and is limited by the person's role in the organization. Organization-wide members only.",
        "tags": [
          "uploads"
        ],
        "security": [
          {
            "personalAgentSession": []
          }
        ],
        "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": "Gomry-Organization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The organization to act in. Optional when the person organizes in exactly one; otherwise a 400 `organization_required` response lists `organizations[].id` to choose from."
          },
          {
            "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": [
          {
            "personalAgentSession": []
          }
        ],
        "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": [
          {
            "personalAgentSession": []
          }
        ],
        "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": [
          {
            "personalAgentSession": []
          }
        ],
        "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": [
          {
            "personalAgentSession": []
          }
        ],
        "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": [
          {
            "personalAgentSession": []
          }
        ],
        "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": [
          {
            "personalAgentSession": []
          }
        ],
        "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": {
      "personalAgentSession": {
        "type": "http",
        "scheme": "DPoP",
        "description": "A Personal Agent Protocol Session Token, sent as `Authorization: DPoP <token>` with a `DPoP` proof on every request. Get one at the token endpoint named by `/.well-known/poppy.json` (JWT bearer grant for a signed-out Session; Direct Sign-In for a signed-in one). A signed-out Session can browse the catalog and check out as a guest. A signed-in Session holding the `poppy:write` scope checks out on the person's own Gomry account: the buyer defaults to the account holder and the tickets appear in their account. `/me` reads the person's tickets and orders with `poppy:read`, and transfers a ticket with `poppy:write`. Signed in to an organizer's account, the organization operations work too: `poppy:read` reads and `poppy:write` changes, limited to what the person's role in that organization allows, in the organization named by the `Gomry-Organization` header (optional when they organize in only one; otherwise a 400 `organization_required` lists them). Members with access to some spaces only are refused; they use the MCP server."
      }
    },
    "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"
  }
}