{
    "openapi": "3.1.0",
    "info": {
        "title": "PlanDocket REST-API",
        "version": "1.0.0",
        "description": "REST-API Ihres PlanDocket-Kontos. Anmeldung mit einem API-Schlüssel (Einstellungen, API) als Bearer-Token oder im Header X-API-Key. Jede Operation nennt die benötigte Berechtigung in x-required-scopes."
    },
    "servers": [
        {
            "url": "https://ihr-mandant.plandocket.com",
            "description": "Adresse Ihres Kontos (durch Ihre eigene Subdomain ersetzen)"
        }
    ],
    "security": [
        {
            "bearerAuth": []
        },
        {
            "apiKeyHeader": []
        }
    ],
    "tags": [
        {
            "name": "events",
            "description": "Events"
        },
        {
            "name": "contacts",
            "description": "Kontakte"
        },
        {
            "name": "participants",
            "description": "Teilnehmer"
        },
        {
            "name": "applications",
            "description": "Bewerbungen"
        },
        {
            "name": "categories",
            "description": "Kategorien"
        },
        {
            "name": "invoices",
            "description": "Rechnungen"
        },
        {
            "name": "credit-notes",
            "description": "Gutschriften"
        },
        {
            "name": "refunds",
            "description": "Erstattungen"
        },
        {
            "name": "payment-reminders",
            "description": "Zahlungserinnerungen"
        },
        {
            "name": "payments",
            "description": "Zahlungen"
        },
        {
            "name": "booths",
            "description": "Stände"
        },
        {
            "name": "booth-reservations",
            "description": "Stand-Reservierungen"
        },
        {
            "name": "booth-types",
            "description": "Standtypen"
        },
        {
            "name": "check-ins",
            "description": "Check-Ins"
        },
        {
            "name": "tasks",
            "description": "Aufgaben"
        },
        {
            "name": "documents",
            "description": "Dokumente"
        },
        {
            "name": "submissions",
            "description": "Einreichungen"
        },
        {
            "name": "service-orders",
            "description": "Dienstleistungsbestellungen"
        },
        {
            "name": "plans",
            "description": "Lagepläne"
        },
        {
            "name": "custom-fields",
            "description": "Benutzerdefinierte Felder"
        },
        {
            "name": "services",
            "description": "Dienstleistungen"
        },
        {
            "name": "service-categories",
            "description": "Dienstleistungskategorien"
        },
        {
            "name": "event-services",
            "description": "Event-Dienstleistungen"
        },
        {
            "name": "submission-types",
            "description": "Einreichungstypen"
        },
        {
            "name": "list-templates",
            "description": "Listenvorlagen"
        },
        {
            "name": "list-entries",
            "description": "Listeneinträge"
        },
        {
            "name": "newsletter",
            "description": "Newsletter"
        },
        {
            "name": "notes",
            "description": "Notizen"
        },
        {
            "name": "schedules",
            "description": "Zeitpläne"
        },
        {
            "name": "webhooks",
            "description": "Webhooks"
        },
        {
            "name": "reports",
            "description": "Berichte"
        },
        {
            "name": "audit-log",
            "description": "Aktivitätsprotokoll"
        },
        {
            "name": "calendar",
            "description": "Kalender"
        },
        {
            "name": "bulk-import",
            "description": "Massenimport"
        }
    ],
    "paths": {
        "/api/v1/events": {
            "get": {
                "tags": [
                    "events"
                ],
                "summary": "Alle Events auflisten",
                "operationId": "getEvents",
                "x-required-scopes": [
                    "events:read"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Suchbegriff zum Filtern der Ergebnisse",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "visible",
                        "in": "query",
                        "required": false,
                        "description": "Nach Sichtbarkeit filtern (0 oder 1)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "upcoming",
                        "in": "query",
                        "required": false,
                        "description": "Nur zukünftige Events anzeigen (1)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (title, event_key, date_from, date_to, city)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (opening_hours, participant_count)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Events"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "event_key": "string",
                                            "title": "string",
                                            "description": "string",
                                            "country": "string",
                                            "state": "string",
                                            "city": "string",
                                            "date_from": "2026-01-15T10:00:00+01:00",
                                            "date_to": "2026-01-15T10:00:00+01:00",
                                            "application_deadline": "2026-01-15T10:00:00+01:00",
                                            "is_visible": true,
                                            "image": {}
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "events"
                ],
                "summary": "Neues Event erstellen",
                "operationId": "postEvents",
                "x-required-scopes": [
                    "events:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EventsCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/events/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "events"
                ],
                "summary": "Einzelnes Event abrufen",
                "operationId": "getEventsById",
                "x-required-scopes": [
                    "events:read"
                ],
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Events"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_key": "string",
                                        "title": "string",
                                        "description": "string",
                                        "country": "string",
                                        "state": "string",
                                        "city": "string",
                                        "date_from": "2026-01-15T10:00:00+01:00",
                                        "date_to": "2026-01-15T10:00:00+01:00",
                                        "application_deadline": "2026-01-15T10:00:00+01:00",
                                        "is_visible": true,
                                        "image": {}
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "events"
                ],
                "summary": "Event aktualisieren",
                "operationId": "putEventsById",
                "x-required-scopes": [
                    "events:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EventsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Events"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_key": "string",
                                        "title": "string",
                                        "description": "string",
                                        "country": "string",
                                        "state": "string",
                                        "city": "string",
                                        "date_from": "2026-01-15T10:00:00+01:00",
                                        "date_to": "2026-01-15T10:00:00+01:00",
                                        "application_deadline": "2026-01-15T10:00:00+01:00",
                                        "is_visible": true,
                                        "image": {}
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "events"
                ],
                "summary": "Event aktualisieren",
                "operationId": "patchEventsById",
                "x-required-scopes": [
                    "events:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EventsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Events"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_key": "string",
                                        "title": "string",
                                        "description": "string",
                                        "country": "string",
                                        "state": "string",
                                        "city": "string",
                                        "date_from": "2026-01-15T10:00:00+01:00",
                                        "date_to": "2026-01-15T10:00:00+01:00",
                                        "application_deadline": "2026-01-15T10:00:00+01:00",
                                        "is_visible": true,
                                        "image": {}
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "events"
                ],
                "summary": "Event in den Papierkorb verschieben (von einem Admin wiederherstellbar)",
                "operationId": "deleteEventsById",
                "x-required-scopes": [
                    "events:write"
                ],
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/contacts": {
            "get": {
                "tags": [
                    "contacts"
                ],
                "summary": "Alle Kontakte auflisten",
                "operationId": "getContacts",
                "x-required-scopes": [
                    "contacts:read"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Suchbegriff zum Filtern der Ergebnisse",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Kategorie-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (company_name, last_name, first_name, email, customer_number, city, created_at)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (categories, events)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Contacts"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "customer_number": "string",
                                            "company_name": "string",
                                            "first_name": "string",
                                            "last_name": "string",
                                            "address": "string",
                                            "postal_code": "string",
                                            "city": "string",
                                            "country": "string",
                                            "state": "string",
                                            "phone": "string",
                                            "fax": "string",
                                            "mobile": "string",
                                            "email": "string",
                                            "website": "string",
                                            "notes": "string",
                                            "tax_id": "string",
                                            "rating": 1,
                                            "account_access_enabled": true,
                                            "has_account": true,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "contacts"
                ],
                "summary": "Neuen Kontakt erstellen",
                "operationId": "postContacts",
                "x-required-scopes": [
                    "contacts:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ContactsCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/contacts/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "contacts"
                ],
                "summary": "Einzelnen Kontakt abrufen",
                "operationId": "getContactsById",
                "x-required-scopes": [
                    "contacts:read"
                ],
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Contacts"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "customer_number": "string",
                                        "company_name": "string",
                                        "first_name": "string",
                                        "last_name": "string",
                                        "address": "string",
                                        "postal_code": "string",
                                        "city": "string",
                                        "country": "string",
                                        "state": "string",
                                        "phone": "string",
                                        "fax": "string",
                                        "mobile": "string",
                                        "email": "string",
                                        "website": "string",
                                        "notes": "string",
                                        "tax_id": "string",
                                        "rating": 1,
                                        "account_access_enabled": true,
                                        "has_account": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "contacts"
                ],
                "summary": "Kontakt aktualisieren",
                "operationId": "putContactsById",
                "x-required-scopes": [
                    "contacts:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ContactsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Contacts"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "customer_number": "string",
                                        "company_name": "string",
                                        "first_name": "string",
                                        "last_name": "string",
                                        "address": "string",
                                        "postal_code": "string",
                                        "city": "string",
                                        "country": "string",
                                        "state": "string",
                                        "phone": "string",
                                        "fax": "string",
                                        "mobile": "string",
                                        "email": "string",
                                        "website": "string",
                                        "notes": "string",
                                        "tax_id": "string",
                                        "rating": 1,
                                        "account_access_enabled": true,
                                        "has_account": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "contacts"
                ],
                "summary": "Kontakt aktualisieren",
                "operationId": "patchContactsById",
                "x-required-scopes": [
                    "contacts:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ContactsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Contacts"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "customer_number": "string",
                                        "company_name": "string",
                                        "first_name": "string",
                                        "last_name": "string",
                                        "address": "string",
                                        "postal_code": "string",
                                        "city": "string",
                                        "country": "string",
                                        "state": "string",
                                        "phone": "string",
                                        "fax": "string",
                                        "mobile": "string",
                                        "email": "string",
                                        "website": "string",
                                        "notes": "string",
                                        "tax_id": "string",
                                        "rating": 1,
                                        "account_access_enabled": true,
                                        "has_account": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "contacts"
                ],
                "summary": "Kontakt in den Papierkorb verschieben (von einem Admin wiederherstellbar)",
                "operationId": "deleteContactsById",
                "x-required-scopes": [
                    "contacts:write"
                ],
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/participants": {
            "get": {
                "tags": [
                    "participants"
                ],
                "summary": "Alle Teilnehmer auflisten",
                "operationId": "getParticipants",
                "x-required-scopes": [
                    "participants:read"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "customer_number",
                        "in": "query",
                        "required": false,
                        "description": "Nach Kundennummer filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "confirmed",
                        "in": "query",
                        "required": false,
                        "description": "Nach Bestätigungsstatus filtern (0 oder 1)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (contact, event, category)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Participants"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "event_id": 1,
                                            "contact_id": 1,
                                            "is_confirmed": true,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "participants"
                ],
                "summary": "Teilnehmer hinzufügen",
                "operationId": "postParticipants",
                "x-required-scopes": [
                    "participants:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ParticipantsCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/participants/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "participants"
                ],
                "summary": "Einzelnen Teilnehmer abrufen",
                "operationId": "getParticipantsById",
                "x-required-scopes": [
                    "participants:read"
                ],
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Participants"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_id": 1,
                                        "contact_id": 1,
                                        "is_confirmed": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "participants"
                ],
                "summary": "Teilnahme aktualisieren",
                "operationId": "putParticipantsById",
                "x-required-scopes": [
                    "participants:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ParticipantsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Participants"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_id": 1,
                                        "contact_id": 1,
                                        "is_confirmed": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "participants"
                ],
                "summary": "Teilnahme aktualisieren",
                "operationId": "patchParticipantsById",
                "x-required-scopes": [
                    "participants:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ParticipantsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Participants"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_id": 1,
                                        "contact_id": 1,
                                        "is_confirmed": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "participants"
                ],
                "summary": "Teilnahme in den Papierkorb verschieben (von einem Admin wiederherstellbar)",
                "operationId": "deleteParticipantsById",
                "x-required-scopes": [
                    "participants:write"
                ],
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/participants/{id}/confirm": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "post": {
                "tags": [
                    "participants"
                ],
                "summary": "Teilnahme bestätigen (wie der Bestätigen-Knopf in der Verwaltung). Optional {\"notify\": true}: der Aussteller erhält die E-Mail „Teilnahme bestätigt“ in seiner Sprache. Bereits bestätigt = keine Änderung, kein zweiter Webhook",
                "operationId": "postParticipantsByIdConfirm",
                "x-required-scopes": [
                    "participants:write"
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/participants/{id}/unconfirm": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "post": {
                "tags": [
                    "participants"
                ],
                "summary": "Bestätigung der Teilnahme zurücknehmen",
                "operationId": "postParticipantsByIdUnconfirm",
                "x-required-scopes": [
                    "participants:write"
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/applications": {
            "get": {
                "tags": [
                    "applications"
                ],
                "summary": "Alle Bewerbungen auflisten",
                "operationId": "getApplications",
                "description": "Die Freigabe legt zusätzlich einen Kontakt an und erfordert daher außerdem den Bereich \"contacts:write\".",
                "x-required-scopes": [
                    "applications:read"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Suchbegriff zum Filtern der Ergebnisse",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Kategorie-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (company_name, last_name, email, city, rating, created_at)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (events, categories)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Applications"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "company_name": "string",
                                            "first_name": "string",
                                            "last_name": "string",
                                            "address": "string",
                                            "postal_code": "string",
                                            "city": "string",
                                            "country": "string",
                                            "state": "string",
                                            "phone": "string",
                                            "fax": "string",
                                            "mobile": "string",
                                            "email": "string",
                                            "website": "string",
                                            "notes": "string",
                                            "tax_id": "string",
                                            "rating": 1,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/applications/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "applications"
                ],
                "summary": "Einzelne Bewerbung abrufen",
                "operationId": "getApplicationsById",
                "description": "Die Freigabe legt zusätzlich einen Kontakt an und erfordert daher außerdem den Bereich \"contacts:write\".",
                "x-required-scopes": [
                    "applications:read"
                ],
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Applications"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "company_name": "string",
                                        "first_name": "string",
                                        "last_name": "string",
                                        "address": "string",
                                        "postal_code": "string",
                                        "city": "string",
                                        "country": "string",
                                        "state": "string",
                                        "phone": "string",
                                        "fax": "string",
                                        "mobile": "string",
                                        "email": "string",
                                        "website": "string",
                                        "notes": "string",
                                        "tax_id": "string",
                                        "rating": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "applications"
                ],
                "summary": "Bewerbung aktualisieren",
                "operationId": "putApplicationsById",
                "description": "Die Freigabe legt zusätzlich einen Kontakt an und erfordert daher außerdem den Bereich \"contacts:write\".",
                "x-required-scopes": [
                    "applications:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ApplicationsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Applications"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "company_name": "string",
                                        "first_name": "string",
                                        "last_name": "string",
                                        "address": "string",
                                        "postal_code": "string",
                                        "city": "string",
                                        "country": "string",
                                        "state": "string",
                                        "phone": "string",
                                        "fax": "string",
                                        "mobile": "string",
                                        "email": "string",
                                        "website": "string",
                                        "notes": "string",
                                        "tax_id": "string",
                                        "rating": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "applications"
                ],
                "summary": "Bewerbung aktualisieren",
                "operationId": "patchApplicationsById",
                "description": "Die Freigabe legt zusätzlich einen Kontakt an und erfordert daher außerdem den Bereich \"contacts:write\".",
                "x-required-scopes": [
                    "applications:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ApplicationsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Applications"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "company_name": "string",
                                        "first_name": "string",
                                        "last_name": "string",
                                        "address": "string",
                                        "postal_code": "string",
                                        "city": "string",
                                        "country": "string",
                                        "state": "string",
                                        "phone": "string",
                                        "fax": "string",
                                        "mobile": "string",
                                        "email": "string",
                                        "website": "string",
                                        "notes": "string",
                                        "tax_id": "string",
                                        "rating": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "applications"
                ],
                "summary": "Bewerbung in den Papierkorb verschieben (von einem Admin wiederherstellbar)",
                "operationId": "deleteApplicationsById",
                "description": "Die Freigabe legt zusätzlich einen Kontakt an und erfordert daher außerdem den Bereich \"contacts:write\".",
                "x-required-scopes": [
                    "applications:write"
                ],
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/applications/{id}/approve": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "post": {
                "tags": [
                    "applications"
                ],
                "summary": "Bewerbung freigeben: legt den Kontakt mit Portalzugang an, überträgt Events, Kategorien, Notizen, Zusatzfelder und Dateien und löst den Webhook application.approved aus. Der Kontakt erhält kein Passwort: Der Bewerber bekommt eine Einladung ins Portal (Link zum Festlegen des Passworts, 7 Tage gültig, in seiner Sprache). Mit dem optionalen Body {\"send_invitation\": false} wird keine Einladung verschickt (sie kann später auf der Kontaktseite im Admin gesendet werden). Wie im Adminbereich wird der Bewerber als Teilnehmer der beworbenen Events aufgenommen: \"event_ids\" beschränkt das auf einen Teil davon ([] nimmt niemanden auf), \"confirm\" (Standard: Mandanten-Einstellung auto_confirm_on_admit, normalerweise false) bestätigt die Teilnahme sofort und \"notify\" (Standard true) verschickt die Teilnahme-E-Mail; für die Aufnahme ist der Scope \"participants:write\" nötig. Liefert contact_id, username, invitation_sent, invitation_status, admitted_events, not_admitted_events (z. B. Event voll, mit code und error) und partial_success. 409, wenn bereits ein Kontakt mit der E-Mail-Adresse existiert oder die Bewerbung schon entschieden ist, 422 ohne gültige E-Mail-Adresse, 403 bei erreichtem Kontaktlimit des Tarifs",
                "operationId": "postApplicationsByIdApprove",
                "description": "Die Freigabe legt zusätzlich einen Kontakt an und erfordert daher außerdem den Bereich \"contacts:write\".",
                "x-required-scopes": [
                    "applications:write"
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/applications/{id}/reject": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "post": {
                "tags": [
                    "applications"
                ],
                "summary": "Bewerbung ablehnen: entfernt sie samt Dateien endgültig (anders als DELETE, das sie in den Papierkorb verschiebt) und löst den Webhook application.rejected aus. Optionaler Body: {\"notify\": true, \"reason\": \"...\"} benachrichtigt den Bewerber per E-Mail (Begründung max. 2000 Zeichen)",
                "operationId": "postApplicationsByIdReject",
                "description": "Die Freigabe legt zusätzlich einen Kontakt an und erfordert daher außerdem den Bereich \"contacts:write\".",
                "x-required-scopes": [
                    "applications:write"
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/categories": {
            "get": {
                "tags": [
                    "categories"
                ],
                "summary": "Alle Kategorien auflisten",
                "operationId": "getCategories",
                "x-required-scopes": [
                    "categories:read"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "hierarchical",
                        "in": "query",
                        "required": false,
                        "description": "Den vollständigen Kategoriebaum ohne Paginierung zurückgeben (1); ohne den Parameter ist die flache Liste paginiert (page, per_page)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Categories"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "category_key": "string",
                                            "title": "string",
                                            "content": "string",
                                            "parent_category_id": 1,
                                            "event_keys": [],
                                            "is_visible": true,
                                            "applicant_visibility": "string",
                                            "account_access_enabled": true,
                                            "sort_order": 1,
                                            "level": 1,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "categories"
                ],
                "summary": "Neue Kategorie erstellen",
                "operationId": "postCategories",
                "x-required-scopes": [
                    "categories:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CategoriesCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/categories/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "categories"
                ],
                "summary": "Einzelne Kategorie abrufen",
                "operationId": "getCategoriesById",
                "x-required-scopes": [
                    "categories:read"
                ],
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Categories"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "category_key": "string",
                                        "title": "string",
                                        "content": "string",
                                        "parent_category_id": 1,
                                        "event_keys": [],
                                        "is_visible": true,
                                        "applicant_visibility": "string",
                                        "account_access_enabled": true,
                                        "sort_order": 1,
                                        "level": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "categories"
                ],
                "summary": "Kategorie aktualisieren",
                "operationId": "putCategoriesById",
                "x-required-scopes": [
                    "categories:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CategoriesInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Categories"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "category_key": "string",
                                        "title": "string",
                                        "content": "string",
                                        "parent_category_id": 1,
                                        "event_keys": [],
                                        "is_visible": true,
                                        "applicant_visibility": "string",
                                        "account_access_enabled": true,
                                        "sort_order": 1,
                                        "level": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "categories"
                ],
                "summary": "Kategorie aktualisieren",
                "operationId": "patchCategoriesById",
                "x-required-scopes": [
                    "categories:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CategoriesInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Categories"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "category_key": "string",
                                        "title": "string",
                                        "content": "string",
                                        "parent_category_id": 1,
                                        "event_keys": [],
                                        "is_visible": true,
                                        "applicant_visibility": "string",
                                        "account_access_enabled": true,
                                        "sort_order": 1,
                                        "level": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "categories"
                ],
                "summary": "Kategorie löschen",
                "operationId": "deleteCategoriesById",
                "x-required-scopes": [
                    "categories:write"
                ],
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/invoices": {
            "get": {
                "tags": [
                    "invoices"
                ],
                "summary": "Alle Rechnungen auflisten (open_amount berücksichtigt Zahlungen, Gutschriften und Abschreibungen)",
                "operationId": "getInvoices",
                "x-required-scopes": [
                    "invoices:read"
                ],
                "x-feature-flag": "invoices",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Rechnungsstatus filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "customer_number",
                        "in": "query",
                        "required": false,
                        "description": "Nach Kundennummer filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "description": "Nach Rechnungstyp filtern (invoice, credit_note)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (invoice_number, invoice_date = Rechnungsdatum, bei Entwürfen leer und zuletzt, total, status, due_date, created_at)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (items, payments, contact, credit_notes)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "required": false,
                        "description": "Nur E-Rechnung: xrechnung oder zugferd (Standard: das an der Rechnung hinterlegte Format)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "output",
                        "in": "query",
                        "required": false,
                        "description": "Nur E-Rechnung: xml oder pdf (Standard: xml bei XRechnung, pdf bei ZUGFeRD)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Invoices"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "invoice_number": "string",
                                            "display_number": "string",
                                            "invoice_type": "string",
                                            "related_invoice_id": 1,
                                            "status": "string",
                                            "event_participant_id": 1,
                                            "contact_id": 1,
                                            "invoice_date": "2026-01-15T10:00:00+01:00",
                                            "issued_at": "2026-01-15T10:00:00+01:00",
                                            "total": 100,
                                            "currency": "string",
                                            "credited_amount": 100,
                                            "paid_amount": 100,
                                            "written_off_amount": 100,
                                            "open_amount": 100,
                                            "service_date": "2026-01-15T10:00:00+01:00",
                                            "due_date": "2026-01-15T10:00:00+01:00",
                                            "is_reverse_charge": true,
                                            "is_locked": true,
                                            "locked_at": "2026-01-15T10:00:00+01:00",
                                            "sent_at": "2026-01-15T10:00:00+01:00",
                                            "reminder_sent_at": "2026-01-15T10:00:00+01:00",
                                            "reminder_count": 1,
                                            "cancellation_reason": "string",
                                            "e_invoice_format": "string",
                                            "e_invoice_status": "string",
                                            "leitweg_id": "string",
                                            "buyer_reference": "string",
                                            "po_number": "string",
                                            "notes": "string",
                                            "links": {},
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "invoices"
                ],
                "summary": "Entwurf für eine Teilnahme (event_participant_id) oder einen Kontakt (contact_id) anlegen. Positionen kommen aus \"items\" (description, quantity, unit_price netto, tax_rate aus Ihren Rechnungseinstellungen) und/oder den offenen abrechenbaren Leistungen der Teilnahme (Stand, Bestellungen, Dokumente; Standard, wenn keine items angegeben sind; \"billable_item_ids\" wählt einzelne aus). Das Fälligkeitsdatum ergibt sich aus dem Zahlungsziel. \"issue\": true stellt die Rechnung sofort (optional \"invoice_date\"), \"send\": true versendet sie zusätzlich. Antwort 201 mit der Rechnung; Probleme beim Stellen oder Versenden stehen in \"warnings\". Löst invoice.created aus",
                "operationId": "postInvoices",
                "x-required-scopes": [
                    "invoices:write"
                ],
                "x-feature-flag": "invoices",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvoicesCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/invoices/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "invoices"
                ],
                "summary": "Einzelne Rechnung mit Positionen abrufen (include=payments,credit_notes,contact für mehr)",
                "operationId": "getInvoicesById",
                "x-required-scopes": [
                    "invoices:read"
                ],
                "x-feature-flag": "invoices",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Invoices"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "invoice_number": "string",
                                        "display_number": "string",
                                        "invoice_type": "string",
                                        "related_invoice_id": 1,
                                        "status": "string",
                                        "event_participant_id": 1,
                                        "contact_id": 1,
                                        "invoice_date": "2026-01-15T10:00:00+01:00",
                                        "issued_at": "2026-01-15T10:00:00+01:00",
                                        "total": 100,
                                        "currency": "string",
                                        "credited_amount": 100,
                                        "paid_amount": 100,
                                        "written_off_amount": 100,
                                        "open_amount": 100,
                                        "service_date": "2026-01-15T10:00:00+01:00",
                                        "due_date": "2026-01-15T10:00:00+01:00",
                                        "is_reverse_charge": true,
                                        "is_locked": true,
                                        "locked_at": "2026-01-15T10:00:00+01:00",
                                        "sent_at": "2026-01-15T10:00:00+01:00",
                                        "reminder_sent_at": "2026-01-15T10:00:00+01:00",
                                        "reminder_count": 1,
                                        "cancellation_reason": "string",
                                        "e_invoice_format": "string",
                                        "e_invoice_status": "string",
                                        "leitweg_id": "string",
                                        "buyer_reference": "string",
                                        "po_number": "string",
                                        "notes": "string",
                                        "links": {},
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "invoices"
                ],
                "summary": "Rechnung aktualisieren: notes und due_date (auch bei gestellten Rechnungen); status \"sent\" stellt einen Entwurf (wie POST /issue), status \"cancelled\" storniert (wie POST /cancel, mit \"cancellation_reason\"). paid, partially_paid, overdue und refunded ergeben sich aus Zahlungen, Gutschriften und dem Mahnlauf und werden mit 422 abgelehnt",
                "operationId": "putInvoicesById",
                "x-required-scopes": [
                    "invoices:write"
                ],
                "x-feature-flag": "invoices",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvoicesInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Invoices"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "invoice_number": "string",
                                        "display_number": "string",
                                        "invoice_type": "string",
                                        "related_invoice_id": 1,
                                        "status": "string",
                                        "event_participant_id": 1,
                                        "contact_id": 1,
                                        "invoice_date": "2026-01-15T10:00:00+01:00",
                                        "issued_at": "2026-01-15T10:00:00+01:00",
                                        "total": 100,
                                        "currency": "string",
                                        "credited_amount": 100,
                                        "paid_amount": 100,
                                        "written_off_amount": 100,
                                        "open_amount": 100,
                                        "service_date": "2026-01-15T10:00:00+01:00",
                                        "due_date": "2026-01-15T10:00:00+01:00",
                                        "is_reverse_charge": true,
                                        "is_locked": true,
                                        "locked_at": "2026-01-15T10:00:00+01:00",
                                        "sent_at": "2026-01-15T10:00:00+01:00",
                                        "reminder_sent_at": "2026-01-15T10:00:00+01:00",
                                        "reminder_count": 1,
                                        "cancellation_reason": "string",
                                        "e_invoice_format": "string",
                                        "e_invoice_status": "string",
                                        "leitweg_id": "string",
                                        "buyer_reference": "string",
                                        "po_number": "string",
                                        "notes": "string",
                                        "links": {},
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "invoices"
                ],
                "summary": "Rechnung aktualisieren: notes und due_date (auch bei gestellten Rechnungen); status \"sent\" stellt einen Entwurf (wie POST /issue), status \"cancelled\" storniert (wie POST /cancel, mit \"cancellation_reason\"). paid, partially_paid, overdue und refunded ergeben sich aus Zahlungen, Gutschriften und dem Mahnlauf und werden mit 422 abgelehnt",
                "operationId": "patchInvoicesById",
                "x-required-scopes": [
                    "invoices:write"
                ],
                "x-feature-flag": "invoices",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvoicesInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Invoices"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "invoice_number": "string",
                                        "display_number": "string",
                                        "invoice_type": "string",
                                        "related_invoice_id": 1,
                                        "status": "string",
                                        "event_participant_id": 1,
                                        "contact_id": 1,
                                        "invoice_date": "2026-01-15T10:00:00+01:00",
                                        "issued_at": "2026-01-15T10:00:00+01:00",
                                        "total": 100,
                                        "currency": "string",
                                        "credited_amount": 100,
                                        "paid_amount": 100,
                                        "written_off_amount": 100,
                                        "open_amount": 100,
                                        "service_date": "2026-01-15T10:00:00+01:00",
                                        "due_date": "2026-01-15T10:00:00+01:00",
                                        "is_reverse_charge": true,
                                        "is_locked": true,
                                        "locked_at": "2026-01-15T10:00:00+01:00",
                                        "sent_at": "2026-01-15T10:00:00+01:00",
                                        "reminder_sent_at": "2026-01-15T10:00:00+01:00",
                                        "reminder_count": 1,
                                        "cancellation_reason": "string",
                                        "e_invoice_format": "string",
                                        "e_invoice_status": "string",
                                        "leitweg_id": "string",
                                        "buyer_reference": "string",
                                        "po_number": "string",
                                        "notes": "string",
                                        "links": {},
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/invoices/{id}/issue": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "post": {
                "tags": [
                    "invoices"
                ],
                "summary": "Entwurf stellen: vergibt die nächste Rechnungsnummer und das Rechnungsdatum (heute oder \"invoice_date\", höchstens bis zum Anfang des Vormonats zurück und nie vor der zuletzt gestellten Rechnung) und sperrt die Rechnung. 422 bei einer Rechnung ohne Positionen oder einer bereits gestellten Rechnung",
                "operationId": "postInvoicesByIdIssue",
                "x-required-scopes": [
                    "invoices:write"
                ],
                "x-feature-flag": "invoices",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/invoices/{id}/send": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "post": {
                "tags": [
                    "invoices"
                ],
                "summary": "Rechnungs-PDF (plus XRechnung-XML) per E-Mail an die Rechnungsadresse des Kunden oder an \"to\" senden (cc, bcc, subject und eine persönliche \"message\" sind optional). Ein Entwurf wird vorher gestellt, damit der Anhang immer die endgültige Nummer trägt. Der Text erscheint in der Sprache des Kunden. Löst invoice.sent aus",
                "operationId": "postInvoicesByIdSend",
                "x-required-scopes": [
                    "invoices:write"
                ],
                "x-feature-flag": "invoices",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/invoices/{id}/pdf": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "invoices"
                ],
                "summary": "Rechnungs-PDF herunterladen (application/pdf). Gestellte E-Rechnungen kommen aus dem Archiv; Entwürfe tragen ein Entwurfs-Wasserzeichen",
                "operationId": "getInvoicesByIdPdf",
                "x-required-scopes": [
                    "invoices:read"
                ],
                "x-feature-flag": "invoices",
                "responses": {
                    "200": {
                        "description": "Die Datei",
                        "content": {
                            "application/pdf": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/invoices/{id}/e-invoice": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "invoices"
                ],
                "summary": "E-Rechnung herunterladen: format=xrechnung (Standardausgabe XML) oder zugferd (Standardausgabe Hybrid-PDF); output=xml|pdf überschreibt das. Verfügbar ist nur das an der Rechnung hinterlegte Format; gestellte Rechnungen kommen aus dem Archiv. 422, wenn E-Rechnungen nicht aktiviert sind oder Stammdaten fehlen",
                "operationId": "getInvoicesByIdEInvoice",
                "x-required-scopes": [
                    "invoices:read"
                ],
                "x-feature-flag": "invoices",
                "responses": {
                    "200": {
                        "description": "Die Datei",
                        "content": {
                            "application/xml": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/invoices/{id}/cancel": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "post": {
                "tags": [
                    "invoices"
                ],
                "summary": "Rechnung stornieren. Eine gestellte Rechnung wird nie geändert: Der offene Rest wird durch eine Gutschrift ausgeglichen (eine Zeile je Steuersatz); \"reason\" ist Pflicht und wird dokumentiert. Ein Entwurf wird einfach verworfen. Optional versendet \"send_credit_note\": true die Gutschrift. Liefert invoice und credit_note. Löst invoice.cancelled und credit_note.created aus. 409, wenn bereits storniert, 422 für Gutschriften und erstattete Rechnungen",
                "operationId": "postInvoicesByIdCancel",
                "x-required-scopes": [
                    "invoices:write"
                ],
                "x-feature-flag": "invoices",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/credit-notes": {
            "get": {
                "tags": [
                    "credit-notes"
                ],
                "summary": "Alle Gutschriften auflisten",
                "operationId": "getCreditNotes",
                "x-required-scopes": [
                    "invoices:read"
                ],
                "x-feature-flag": "invoices",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Rechnungsstatus filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "customer_number",
                        "in": "query",
                        "required": false,
                        "description": "Nach Kundennummer filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (items, payments, contact, credit_notes)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/CreditNotes"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "invoice_number": "string",
                                            "display_number": "string",
                                            "invoice_type": "string",
                                            "related_invoice_id": 1,
                                            "status": "string",
                                            "event_participant_id": 1,
                                            "contact_id": 1,
                                            "invoice_date": "2026-01-15T10:00:00+01:00",
                                            "issued_at": "2026-01-15T10:00:00+01:00",
                                            "total": 100,
                                            "currency": "string",
                                            "credited_amount": 100,
                                            "paid_amount": 100,
                                            "written_off_amount": 100,
                                            "open_amount": 100,
                                            "service_date": "2026-01-15T10:00:00+01:00",
                                            "due_date": "2026-01-15T10:00:00+01:00",
                                            "is_reverse_charge": true,
                                            "is_locked": true,
                                            "locked_at": "2026-01-15T10:00:00+01:00",
                                            "sent_at": "2026-01-15T10:00:00+01:00",
                                            "reminder_sent_at": "2026-01-15T10:00:00+01:00",
                                            "reminder_count": 1,
                                            "cancellation_reason": "string",
                                            "e_invoice_format": "string",
                                            "e_invoice_status": "string",
                                            "leitweg_id": "string",
                                            "buyer_reference": "string",
                                            "po_number": "string",
                                            "notes": "string",
                                            "links": {},
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/credit-notes/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "credit-notes"
                ],
                "summary": "Einzelne Gutschrift abrufen (related_invoice_id ist die korrigierte Rechnung)",
                "operationId": "getCreditNotesById",
                "x-required-scopes": [
                    "invoices:read"
                ],
                "x-feature-flag": "invoices",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/CreditNotes"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "invoice_number": "string",
                                        "display_number": "string",
                                        "invoice_type": "string",
                                        "related_invoice_id": 1,
                                        "status": "string",
                                        "event_participant_id": 1,
                                        "contact_id": 1,
                                        "invoice_date": "2026-01-15T10:00:00+01:00",
                                        "issued_at": "2026-01-15T10:00:00+01:00",
                                        "total": 100,
                                        "currency": "string",
                                        "credited_amount": 100,
                                        "paid_amount": 100,
                                        "written_off_amount": 100,
                                        "open_amount": 100,
                                        "service_date": "2026-01-15T10:00:00+01:00",
                                        "due_date": "2026-01-15T10:00:00+01:00",
                                        "is_reverse_charge": true,
                                        "is_locked": true,
                                        "locked_at": "2026-01-15T10:00:00+01:00",
                                        "sent_at": "2026-01-15T10:00:00+01:00",
                                        "reminder_sent_at": "2026-01-15T10:00:00+01:00",
                                        "reminder_count": 1,
                                        "cancellation_reason": "string",
                                        "e_invoice_format": "string",
                                        "e_invoice_status": "string",
                                        "leitweg_id": "string",
                                        "buyer_reference": "string",
                                        "po_number": "string",
                                        "notes": "string",
                                        "links": {},
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/credit-notes/{id}/pdf": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "credit-notes"
                ],
                "summary": "PDF der Gutschrift herunterladen",
                "operationId": "getCreditNotesByIdPdf",
                "x-required-scopes": [
                    "invoices:read"
                ],
                "x-feature-flag": "invoices",
                "responses": {
                    "200": {
                        "description": "Die Datei",
                        "content": {
                            "application/pdf": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/refunds": {
            "get": {
                "tags": [
                    "refunds"
                ],
                "summary": "Alle Erstattungen auflisten (\"source\" ist refund oder payment; Gateway-Zeilen haben IDs wie \"payment-95\")",
                "operationId": "getRefunds",
                "x-required-scopes": [
                    "payments:read"
                ],
                "x-feature-flag": "invoices",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "invoice_number",
                        "in": "query",
                        "required": false,
                        "description": "Nur Erstattungen dieser Rechnung",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Status filtern (pending, completed, failed)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "gateway",
                        "in": "query",
                        "required": false,
                        "description": "Nach Zahlungsanbieter filtern (stripe, paypal, manual …)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "description": "Zahlungen ab diesem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "description": "Zahlungen bis zu diesem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (refund_id, amount, status, gateway, created_at, processed_at)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Refunds"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "source": "string",
                                            "payment_id": 1,
                                            "invoice_id": 1,
                                            "invoice_number": "string",
                                            "amount": 100,
                                            "currency": "string",
                                            "reason": "string",
                                            "gateway": "string",
                                            "gateway_refund_id": "string",
                                            "status": "string",
                                            "processed_at": "2026-01-15T10:00:00+01:00",
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/refunds/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "refunds"
                ],
                "summary": "Einzelne in PlanDocket gebuchte Erstattung abrufen",
                "operationId": "getRefundsById",
                "x-required-scopes": [
                    "payments:read"
                ],
                "x-feature-flag": "invoices",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Refunds"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "source": "string",
                                        "payment_id": 1,
                                        "invoice_id": 1,
                                        "invoice_number": "string",
                                        "amount": 100,
                                        "currency": "string",
                                        "reason": "string",
                                        "gateway": "string",
                                        "gateway_refund_id": "string",
                                        "status": "string",
                                        "processed_at": "2026-01-15T10:00:00+01:00",
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/payment-reminders": {
            "get": {
                "tags": [
                    "payment-reminders"
                ],
                "summary": "Alle Zahlungserinnerungen auflisten (neueste zuerst)",
                "operationId": "getPaymentReminders",
                "x-required-scopes": [
                    "invoices:read"
                ],
                "x-feature-flag": "invoices",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "invoice_id",
                        "in": "query",
                        "required": false,
                        "description": "Nur Erinnerungen dieser Rechnung (ID)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "invoice_number",
                        "in": "query",
                        "required": false,
                        "description": "Nur Erinnerungen dieser Rechnung (Rechnungsnummer)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "reminder_type",
                        "in": "query",
                        "required": false,
                        "description": "Stufe: first, second, final oder legal",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "level",
                        "in": "query",
                        "required": false,
                        "description": "Mahnstufe als Zahl (1, 2, 3 ...)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "description": "Versendet ab (YYYY-MM-DD oder ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "description": "Versendet bis (YYYY-MM-DD oder ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (sent_at, level, created_at, reminder_id; Standard sent_at absteigend)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/PaymentReminders"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "invoice_id": 1,
                                            "invoice_number": "string",
                                            "invoice_status": "string",
                                            "event_participant_id": 1,
                                            "contact_id": 1,
                                            "reminder_type": "string",
                                            "reminder_type_label": "string",
                                            "level": 1,
                                            "fee_amount": 100,
                                            "currency": "string",
                                            "due_date": "2026-01-15T10:00:00+01:00",
                                            "dunning_stopped": true,
                                            "sent_at": "2026-01-15T10:00:00+01:00",
                                            "sent_to": "string",
                                            "sent_via": "string",
                                            "subject": "string",
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "template_key": "string",
                                            "message_preview": "string"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/payment-reminders/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "payment-reminders"
                ],
                "summary": "Einzelne Zahlungserinnerung mit Textvorschau abrufen",
                "operationId": "getPaymentRemindersById",
                "x-required-scopes": [
                    "invoices:read"
                ],
                "x-feature-flag": "invoices",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/PaymentReminders"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "invoice_id": 1,
                                        "invoice_number": "string",
                                        "invoice_status": "string",
                                        "event_participant_id": 1,
                                        "contact_id": 1,
                                        "reminder_type": "string",
                                        "reminder_type_label": "string",
                                        "level": 1,
                                        "fee_amount": 100,
                                        "currency": "string",
                                        "due_date": "2026-01-15T10:00:00+01:00",
                                        "dunning_stopped": true,
                                        "sent_at": "2026-01-15T10:00:00+01:00",
                                        "sent_to": "string",
                                        "sent_via": "string",
                                        "subject": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "template_key": "string",
                                        "message_preview": "string"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/payments": {
            "get": {
                "tags": [
                    "payments"
                ],
                "summary": "Alle Zahlungen auflisten",
                "operationId": "getPayments",
                "x-required-scopes": [
                    "payments:read"
                ],
                "x-feature-flag": "invoices",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "invoice_number",
                        "in": "query",
                        "required": false,
                        "description": "Nach Rechnungsnummer filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Zahlungsstatus filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "description": "Zahlungen ab diesem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "description": "Zahlungen bis zu diesem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (amount, status, payment_date, created_at)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (invoice)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Payments"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "invoice_id": 1,
                                            "amount": 100,
                                            "currency": "string",
                                            "gateway_id": 1,
                                            "gateway_key": "string",
                                            "gateway_name": "string",
                                            "transaction_id": "string",
                                            "gateway_fee": 100,
                                            "net_amount": 100,
                                            "status": "string",
                                            "payment_date": "2026-01-15T10:00:00+01:00",
                                            "notes": "string",
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "payments"
                ],
                "summary": "Zahlung erfassen. Zahlungen sind nur für gestellte, offene Rechnungen möglich (sent, partially_paid, overdue): Entwürfe, stornierte oder erstattete Rechnungen und Gutschriften werden mit 422 abgelehnt, eine vollständig bezahlte Rechnung mit 400. Eine wiederholte Stripe/PayPal-transaction_id liefert die bestehende Zahlung mit 200, oder 409, wenn sie zu einer anderen Rechnung gehört",
                "operationId": "postPayments",
                "x-required-scopes": [
                    "payments:write"
                ],
                "x-feature-flag": "invoices",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PaymentsCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/payments/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "payments"
                ],
                "summary": "Einzelne Zahlung abrufen",
                "operationId": "getPaymentsById",
                "x-required-scopes": [
                    "payments:read"
                ],
                "x-feature-flag": "invoices",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Payments"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "invoice_id": 1,
                                        "amount": 100,
                                        "currency": "string",
                                        "gateway_id": 1,
                                        "gateway_key": "string",
                                        "gateway_name": "string",
                                        "transaction_id": "string",
                                        "gateway_fee": 100,
                                        "net_amount": 100,
                                        "status": "string",
                                        "payment_date": "2026-01-15T10:00:00+01:00",
                                        "notes": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "payments"
                ],
                "summary": "Zahlung aktualisieren (Status, Notizen, Zahlungsdatum). Unveränderte Werte werden ignoriert; jede Änderung wird im Rechnungs-Audit-Log protokolliert. Der Abschluss setzt eine bezahlbare Rechnung und ausreichenden offenen Betrag voraus. Bei gesperrten Rechnungen behalten abgeschlossene, erstattete und per Stripe/PayPal bestätigte Zahlungen Status und Zahlungsdatum (400); Notizen bleiben änderbar. Erstattungen können nicht per API geändert werden",
                "operationId": "putPaymentsById",
                "x-required-scopes": [
                    "payments:write"
                ],
                "x-feature-flag": "invoices",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PaymentsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Payments"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "invoice_id": 1,
                                        "amount": 100,
                                        "currency": "string",
                                        "gateway_id": 1,
                                        "gateway_key": "string",
                                        "gateway_name": "string",
                                        "transaction_id": "string",
                                        "gateway_fee": 100,
                                        "net_amount": 100,
                                        "status": "string",
                                        "payment_date": "2026-01-15T10:00:00+01:00",
                                        "notes": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "payments"
                ],
                "summary": "Zahlung aktualisieren (Status, Notizen, Zahlungsdatum). Unveränderte Werte werden ignoriert; jede Änderung wird im Rechnungs-Audit-Log protokolliert. Der Abschluss setzt eine bezahlbare Rechnung und ausreichenden offenen Betrag voraus. Bei gesperrten Rechnungen behalten abgeschlossene, erstattete und per Stripe/PayPal bestätigte Zahlungen Status und Zahlungsdatum (400); Notizen bleiben änderbar. Erstattungen können nicht per API geändert werden",
                "operationId": "patchPaymentsById",
                "x-required-scopes": [
                    "payments:write"
                ],
                "x-feature-flag": "invoices",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PaymentsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Payments"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "invoice_id": 1,
                                        "amount": 100,
                                        "currency": "string",
                                        "gateway_id": 1,
                                        "gateway_key": "string",
                                        "gateway_name": "string",
                                        "transaction_id": "string",
                                        "gateway_fee": 100,
                                        "net_amount": 100,
                                        "status": "string",
                                        "payment_date": "2026-01-15T10:00:00+01:00",
                                        "notes": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "payments"
                ],
                "summary": "Zahlung löschen",
                "operationId": "deletePaymentsById",
                "x-required-scopes": [
                    "payments:write"
                ],
                "x-feature-flag": "invoices",
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/booths": {
            "get": {
                "tags": [
                    "booths"
                ],
                "summary": "Alle Stände auflisten",
                "operationId": "getBooths",
                "x-required-scopes": [
                    "booths:read"
                ],
                "x-feature-flag": "booths",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "plan_id",
                        "in": "query",
                        "required": false,
                        "description": "Nach Lageplan-ID filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Standstatus filtern (available, reserved, sold, blocked)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Booths"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "plan_id": 1,
                                            "plan_name": "string",
                                            "event_id": 1,
                                            "event_title": "string",
                                            "booth_type_id": 1,
                                            "booth_type_name": "string",
                                            "booth_type_key": "string",
                                            "booth_number": "string",
                                            "booth_name": "string",
                                            "description": "string",
                                            "dimensions": {},
                                            "position": {},
                                            "formula_id": 1,
                                            "fixed_price": 100,
                                            "tax_rate": 100,
                                            "status": "string",
                                            "blocked_reason": "string",
                                            "color": "string",
                                            "notes": "string",
                                            "amenities": [],
                                            "reservation": {},
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "booths"
                ],
                "summary": "Neuen Stand erstellen. Als Status sind nur \"available\" oder \"blocked\" möglich; \"reserved\" und \"sold\" ergeben sich aus den Reservierungen",
                "operationId": "postBooths",
                "x-required-scopes": [
                    "booths:write"
                ],
                "x-feature-flag": "booths",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BoothsCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/booths/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "booths"
                ],
                "summary": "Einzelnen Stand abrufen",
                "operationId": "getBoothsById",
                "x-required-scopes": [
                    "booths:read"
                ],
                "x-feature-flag": "booths",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Booths"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "plan_id": 1,
                                        "plan_name": "string",
                                        "event_id": 1,
                                        "event_title": "string",
                                        "booth_type_id": 1,
                                        "booth_type_name": "string",
                                        "booth_type_key": "string",
                                        "booth_number": "string",
                                        "booth_name": "string",
                                        "description": "string",
                                        "dimensions": {},
                                        "position": {},
                                        "formula_id": 1,
                                        "fixed_price": 100,
                                        "tax_rate": 100,
                                        "status": "string",
                                        "blocked_reason": "string",
                                        "color": "string",
                                        "notes": "string",
                                        "amenities": [],
                                        "reservation": {},
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "booths"
                ],
                "summary": "Stand aktualisieren. Als Status sind nur \"available\" oder \"blocked\" möglich; solange eine offene oder bestätigte Reservierung besteht, kann der Status nicht geändert werden (400)",
                "operationId": "putBoothsById",
                "x-required-scopes": [
                    "booths:write"
                ],
                "x-feature-flag": "booths",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BoothsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Booths"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "plan_id": 1,
                                        "plan_name": "string",
                                        "event_id": 1,
                                        "event_title": "string",
                                        "booth_type_id": 1,
                                        "booth_type_name": "string",
                                        "booth_type_key": "string",
                                        "booth_number": "string",
                                        "booth_name": "string",
                                        "description": "string",
                                        "dimensions": {},
                                        "position": {},
                                        "formula_id": 1,
                                        "fixed_price": 100,
                                        "tax_rate": 100,
                                        "status": "string",
                                        "blocked_reason": "string",
                                        "color": "string",
                                        "notes": "string",
                                        "amenities": [],
                                        "reservation": {},
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "booths"
                ],
                "summary": "Stand aktualisieren. Als Status sind nur \"available\" oder \"blocked\" möglich; solange eine offene oder bestätigte Reservierung besteht, kann der Status nicht geändert werden (400)",
                "operationId": "patchBoothsById",
                "x-required-scopes": [
                    "booths:write"
                ],
                "x-feature-flag": "booths",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BoothsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Booths"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "plan_id": 1,
                                        "plan_name": "string",
                                        "event_id": 1,
                                        "event_title": "string",
                                        "booth_type_id": 1,
                                        "booth_type_name": "string",
                                        "booth_type_key": "string",
                                        "booth_number": "string",
                                        "booth_name": "string",
                                        "description": "string",
                                        "dimensions": {},
                                        "position": {},
                                        "formula_id": 1,
                                        "fixed_price": 100,
                                        "tax_rate": 100,
                                        "status": "string",
                                        "blocked_reason": "string",
                                        "color": "string",
                                        "notes": "string",
                                        "amenities": [],
                                        "reservation": {},
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "booths"
                ],
                "summary": "Stand löschen (wird mit 400 abgelehnt, solange eine offene oder bestätigte Reservierung besteht)",
                "operationId": "deleteBoothsById",
                "x-required-scopes": [
                    "booths:write"
                ],
                "x-feature-flag": "booths",
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/booth-reservations": {
            "get": {
                "tags": [
                    "booth-reservations"
                ],
                "summary": "Alle Reservierungen auflisten",
                "operationId": "getBoothReservations",
                "x-required-scopes": [
                    "booths:read"
                ],
                "x-feature-flag": "booths",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "booth_id",
                        "in": "query",
                        "required": false,
                        "description": "Nach Stand-ID filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "participant_id",
                        "in": "query",
                        "required": false,
                        "description": "Nach Teilnehmer-ID filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Reservierungsstatus filtern (pending, confirmed, cancelled)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (booth_number, status, created_at, reserved_at, final_price)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (booth, participant)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/BoothReservations"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "booth_id": 1,
                                            "event_participant_id": 1,
                                            "status": "string",
                                            "reserved_at": "2026-01-15T10:00:00+01:00",
                                            "confirmed_at": "2026-01-15T10:00:00+01:00",
                                            "cancelled_at": "2026-01-15T10:00:00+01:00",
                                            "cancellation_reason": "string",
                                            "final_price": 100,
                                            "price_breakdown": {},
                                            "notes": "string",
                                            "created_by": 1,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "booth-reservations"
                ],
                "summary": "Neue Reservierung erstellen (409, wenn der Stand inzwischen vergeben oder gesperrt wurde)",
                "operationId": "postBoothReservations",
                "x-required-scopes": [
                    "booths:write"
                ],
                "x-feature-flag": "booths",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BoothReservationsCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/booth-reservations/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "booth-reservations"
                ],
                "summary": "Einzelne Reservierung abrufen",
                "operationId": "getBoothReservationsById",
                "x-required-scopes": [
                    "booths:read"
                ],
                "x-feature-flag": "booths",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/BoothReservations"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "booth_id": 1,
                                        "event_participant_id": 1,
                                        "status": "string",
                                        "reserved_at": "2026-01-15T10:00:00+01:00",
                                        "confirmed_at": "2026-01-15T10:00:00+01:00",
                                        "cancelled_at": "2026-01-15T10:00:00+01:00",
                                        "cancellation_reason": "string",
                                        "final_price": 100,
                                        "price_breakdown": {},
                                        "notes": "string",
                                        "created_by": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "booth-reservations"
                ],
                "summary": "Reservierung aktualisieren. Bestätigen oder Stornieren benachrichtigt den Aussteller per E-Mail wie im Admin-Bereich; mit \"notify_exhibitor\": false wird keine E-Mail gesendet. Abgerechnete Reservierungen können nicht storniert oder umgepreist werden (409)",
                "operationId": "putBoothReservationsById",
                "x-required-scopes": [
                    "booths:write"
                ],
                "x-feature-flag": "booths",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BoothReservationsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/BoothReservations"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "booth_id": 1,
                                        "event_participant_id": 1,
                                        "status": "string",
                                        "reserved_at": "2026-01-15T10:00:00+01:00",
                                        "confirmed_at": "2026-01-15T10:00:00+01:00",
                                        "cancelled_at": "2026-01-15T10:00:00+01:00",
                                        "cancellation_reason": "string",
                                        "final_price": 100,
                                        "price_breakdown": {},
                                        "notes": "string",
                                        "created_by": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "booth-reservations"
                ],
                "summary": "Reservierung aktualisieren. Bestätigen oder Stornieren benachrichtigt den Aussteller per E-Mail wie im Admin-Bereich; mit \"notify_exhibitor\": false wird keine E-Mail gesendet. Abgerechnete Reservierungen können nicht storniert oder umgepreist werden (409)",
                "operationId": "patchBoothReservationsById",
                "x-required-scopes": [
                    "booths:write"
                ],
                "x-feature-flag": "booths",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BoothReservationsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/BoothReservations"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "booth_id": 1,
                                        "event_participant_id": 1,
                                        "status": "string",
                                        "reserved_at": "2026-01-15T10:00:00+01:00",
                                        "confirmed_at": "2026-01-15T10:00:00+01:00",
                                        "cancelled_at": "2026-01-15T10:00:00+01:00",
                                        "cancellation_reason": "string",
                                        "final_price": 100,
                                        "price_breakdown": {},
                                        "notes": "string",
                                        "created_by": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "booth-reservations"
                ],
                "summary": "Reservierung endgültig löschen (zum Stornieren mit Historie PUT/PATCH mit status \"cancelled\" verwenden). Der Stand wird nur freigegeben, wenn keine andere aktive Reservierung ihn belegt; abgerechnete Reservierungen können nicht gelöscht werden (409)",
                "operationId": "deleteBoothReservationsById",
                "x-required-scopes": [
                    "booths:write"
                ],
                "x-feature-flag": "booths",
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/booth-types": {
            "get": {
                "tags": [
                    "booth-types"
                ],
                "summary": "Alle Standtypen auflisten (booth_count = Stände mit diesem Typ)",
                "operationId": "getBoothTypes",
                "x-required-scopes": [
                    "plans:read"
                ],
                "x-feature-flag": "booths",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "required": false,
                        "description": "Nur aktive (1) oder nur inaktive (0) Standtypen",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nur Standtypen, die für dieses Event angeboten werden (Typen ohne Event-Einschränkung sind enthalten)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/BoothTypes"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "booth_type_key": "string",
                                            "booth_type_name": "string",
                                            "description": "string",
                                            "default_width": 100,
                                            "default_depth": 100,
                                            "min_width": 100,
                                            "max_width": 100,
                                            "min_depth": 100,
                                            "max_depth": 100,
                                            "color": "string",
                                            "category_keys": [],
                                            "event_keys": [],
                                            "is_active": true,
                                            "sort_order": 1,
                                            "booth_count": 1,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "booth-types"
                ],
                "summary": "Standtyp anlegen. Pflicht ist nur booth_type_name; ohne Schlüssel wird er aus dem Namen erzeugt, Größen sind standardmäßig 3 x 3 m (erlaubt 1 bis 20 m)",
                "operationId": "postBoothTypes",
                "x-required-scopes": [
                    "plans:write"
                ],
                "x-feature-flag": "booths",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BoothTypesCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/booth-types/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "booth-types"
                ],
                "summary": "Einzelnen Standtyp abrufen",
                "operationId": "getBoothTypesById",
                "x-required-scopes": [
                    "plans:read"
                ],
                "x-feature-flag": "booths",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/BoothTypes"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "booth_type_key": "string",
                                        "booth_type_name": "string",
                                        "description": "string",
                                        "default_width": 100,
                                        "default_depth": 100,
                                        "min_width": 100,
                                        "max_width": 100,
                                        "min_depth": 100,
                                        "max_depth": 100,
                                        "color": "string",
                                        "category_keys": [],
                                        "event_keys": [],
                                        "is_active": true,
                                        "sort_order": 1,
                                        "booth_count": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "booth-types"
                ],
                "summary": "Standtyp aktualisieren (nur die gesendeten Felder). Eine Schlüsseländerung aktualisiert auch die Dienstleistungen, die auf den alten Schlüssel beschränkt sind",
                "operationId": "putBoothTypesById",
                "x-required-scopes": [
                    "plans:write"
                ],
                "x-feature-flag": "booths",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BoothTypesInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/BoothTypes"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "booth_type_key": "string",
                                        "booth_type_name": "string",
                                        "description": "string",
                                        "default_width": 100,
                                        "default_depth": 100,
                                        "min_width": 100,
                                        "max_width": 100,
                                        "min_depth": 100,
                                        "max_depth": 100,
                                        "color": "string",
                                        "category_keys": [],
                                        "event_keys": [],
                                        "is_active": true,
                                        "sort_order": 1,
                                        "booth_count": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "booth-types"
                ],
                "summary": "Standtyp aktualisieren (nur die gesendeten Felder). Eine Schlüsseländerung aktualisiert auch die Dienstleistungen, die auf den alten Schlüssel beschränkt sind",
                "operationId": "patchBoothTypesById",
                "x-required-scopes": [
                    "plans:write"
                ],
                "x-feature-flag": "booths",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BoothTypesInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/BoothTypes"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "booth_type_key": "string",
                                        "booth_type_name": "string",
                                        "description": "string",
                                        "default_width": 100,
                                        "default_depth": 100,
                                        "min_width": 100,
                                        "max_width": 100,
                                        "min_depth": 100,
                                        "max_depth": 100,
                                        "color": "string",
                                        "category_keys": [],
                                        "event_keys": [],
                                        "is_active": true,
                                        "sort_order": 1,
                                        "booth_count": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "booth-types"
                ],
                "summary": "Standtyp löschen. Abgelehnt mit 409, solange Stände ihn verwenden; deaktivieren Sie ihn stattdessen (is_active: false)",
                "operationId": "deleteBoothTypesById",
                "x-required-scopes": [
                    "plans:write"
                ],
                "x-feature-flag": "booths",
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/check-ins": {
            "get": {
                "tags": [
                    "check-ins"
                ],
                "summary": "Alle Check-Ins auflisten",
                "operationId": "getCheckIns",
                "x-required-scopes": [
                    "checkins:read"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": true,
                        "description": "Nach Event-Schlüssel filtern (erforderlich)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/CheckIns"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "event_participant_id": 1,
                                            "event_id": 1,
                                            "event_title": "string",
                                            "event_key": "string",
                                            "contact": {},
                                            "check_in_type": "string",
                                            "badge_number": "string",
                                            "station": "string",
                                            "checked_in_at": "2026-01-15T10:00:00+01:00",
                                            "checked_out_at": "2026-01-15T10:00:00+01:00",
                                            "is_checked_in": true,
                                            "checked_in_by": "string",
                                            "notes": "string"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "check-ins"
                ],
                "summary": "Teilnehmer einchecken",
                "operationId": "postCheckIns",
                "x-required-scopes": [
                    "checkins:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CheckInsCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/check-ins/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "check-ins"
                ],
                "summary": "Einzelnen Check-In abrufen",
                "operationId": "getCheckInsById",
                "x-required-scopes": [
                    "checkins:read"
                ],
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/CheckIns"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_participant_id": 1,
                                        "event_id": 1,
                                        "event_title": "string",
                                        "event_key": "string",
                                        "contact": {},
                                        "check_in_type": "string",
                                        "badge_number": "string",
                                        "station": "string",
                                        "checked_in_at": "2026-01-15T10:00:00+01:00",
                                        "checked_out_at": "2026-01-15T10:00:00+01:00",
                                        "is_checked_in": true,
                                        "checked_in_by": "string",
                                        "notes": "string"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "check-ins"
                ],
                "summary": "Check-In löschen",
                "operationId": "deleteCheckInsById",
                "x-required-scopes": [
                    "checkins:write"
                ],
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/check-ins/stats": {
            "get": {
                "tags": [
                    "check-ins"
                ],
                "summary": "Check-In-Statistiken abrufen",
                "operationId": "getCheckInsStats",
                "x-required-scopes": [
                    "checkins:read"
                ],
                "parameters": [
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": true,
                        "description": "Nach Event-Schlüssel filtern (erforderlich)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/tasks": {
            "get": {
                "tags": [
                    "tasks"
                ],
                "summary": "Alle Aufgaben auflisten",
                "operationId": "getTasks",
                "x-required-scopes": [
                    "tasks:read"
                ],
                "x-feature-flag": "tasks",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Suchbegriff zum Filtern der Ergebnisse",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Aufgabenstatus filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "priority",
                        "in": "query",
                        "required": false,
                        "description": "Nach Aufgabenpriorität filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "assigned_to",
                        "in": "query",
                        "required": false,
                        "description": "Nach zugewiesenem Administrator filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "entity_type",
                        "in": "query",
                        "required": false,
                        "description": "Nach verknüpftem Entitätstyp filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "entity_id",
                        "in": "query",
                        "required": false,
                        "description": "Nach verknüpfter Entitäts-ID filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "overdue",
                        "in": "query",
                        "required": false,
                        "description": "Nur überfällige Aufgaben anzeigen (1)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (title, due_date, priority, status, created_at)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (entity). Der verknüpfte Datensatz wird nur aufgelöst, wenn der Schlüssel auch dessen Ressource lesen darf (z. B. Bereich \"contacts\" für einen Kontakt), sonst ist entity null",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Tasks"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "entity_type": "string",
                                            "entity_id": 1,
                                            "assigned_to": 1,
                                            "assigned_to_name": "string",
                                            "created_by": 1,
                                            "created_by_name": "string",
                                            "title": "string",
                                            "description": "string",
                                            "due_date": "2026-01-15T10:00:00+01:00",
                                            "priority": "string",
                                            "status": "string",
                                            "completed_at": "2026-01-15T10:00:00+01:00",
                                            "completed_by": 1,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "tasks"
                ],
                "summary": "Neue Aufgabe erstellen",
                "operationId": "postTasks",
                "x-required-scopes": [
                    "tasks:write"
                ],
                "x-feature-flag": "tasks",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TasksCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/tasks/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "tasks"
                ],
                "summary": "Einzelne Aufgabe abrufen",
                "operationId": "getTasksById",
                "x-required-scopes": [
                    "tasks:read"
                ],
                "x-feature-flag": "tasks",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Tasks"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "entity_type": "string",
                                        "entity_id": 1,
                                        "assigned_to": 1,
                                        "assigned_to_name": "string",
                                        "created_by": 1,
                                        "created_by_name": "string",
                                        "title": "string",
                                        "description": "string",
                                        "due_date": "2026-01-15T10:00:00+01:00",
                                        "priority": "string",
                                        "status": "string",
                                        "completed_at": "2026-01-15T10:00:00+01:00",
                                        "completed_by": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "tasks"
                ],
                "summary": "Aufgabe aktualisieren",
                "operationId": "putTasksById",
                "x-required-scopes": [
                    "tasks:write"
                ],
                "x-feature-flag": "tasks",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TasksInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Tasks"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "entity_type": "string",
                                        "entity_id": 1,
                                        "assigned_to": 1,
                                        "assigned_to_name": "string",
                                        "created_by": 1,
                                        "created_by_name": "string",
                                        "title": "string",
                                        "description": "string",
                                        "due_date": "2026-01-15T10:00:00+01:00",
                                        "priority": "string",
                                        "status": "string",
                                        "completed_at": "2026-01-15T10:00:00+01:00",
                                        "completed_by": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "tasks"
                ],
                "summary": "Aufgabe aktualisieren",
                "operationId": "patchTasksById",
                "x-required-scopes": [
                    "tasks:write"
                ],
                "x-feature-flag": "tasks",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TasksInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Tasks"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "entity_type": "string",
                                        "entity_id": 1,
                                        "assigned_to": 1,
                                        "assigned_to_name": "string",
                                        "created_by": 1,
                                        "created_by_name": "string",
                                        "title": "string",
                                        "description": "string",
                                        "due_date": "2026-01-15T10:00:00+01:00",
                                        "priority": "string",
                                        "status": "string",
                                        "completed_at": "2026-01-15T10:00:00+01:00",
                                        "completed_by": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "tasks"
                ],
                "summary": "Aufgabe in den Papierkorb verschieben (von einem Admin wiederherstellbar)",
                "operationId": "deleteTasksById",
                "x-required-scopes": [
                    "tasks:write"
                ],
                "x-feature-flag": "tasks",
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/documents": {
            "get": {
                "tags": [
                    "documents"
                ],
                "summary": "Alle Dokumente auflisten",
                "operationId": "getDocuments",
                "x-required-scopes": [
                    "documents:read"
                ],
                "x-feature-flag": "documents",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "entity_type",
                        "in": "query",
                        "required": false,
                        "description": "Nach Entitätstyp filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "entity_id",
                        "in": "query",
                        "required": false,
                        "description": "Nach Entitäts-ID filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category_id",
                        "in": "query",
                        "required": false,
                        "description": "Nach Dokumentenkategorie-ID filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "is_contract",
                        "in": "query",
                        "required": false,
                        "description": "Nach Vertragsstatus filtern (0 oder 1)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "contract_status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Vertragsstatuswert filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "esign_status",
                        "in": "query",
                        "required": false,
                        "description": "Nach E-Signatur-Status filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (document_number, created_at, updated_at, contract_status, esign_status)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (line_items)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Documents"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "category_id": 1,
                                            "category_name": "string",
                                            "document_number": "string",
                                            "entity_type": "string",
                                            "entity_id": 1,
                                            "template_id": 1,
                                            "content": "string",
                                            "metadata": {},
                                            "esign_status": "string",
                                            "is_contract": true,
                                            "contract_status": "string",
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "documents"
                ],
                "summary": "Neues Dokument generieren",
                "operationId": "postDocuments",
                "x-required-scopes": [
                    "documents:write"
                ],
                "x-feature-flag": "documents",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DocumentsCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/documents/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "documents"
                ],
                "summary": "Einzelnes Dokument abrufen",
                "operationId": "getDocumentsById",
                "x-required-scopes": [
                    "documents:read"
                ],
                "x-feature-flag": "documents",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Documents"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "category_id": 1,
                                        "category_name": "string",
                                        "document_number": "string",
                                        "entity_type": "string",
                                        "entity_id": 1,
                                        "template_id": 1,
                                        "content": "string",
                                        "metadata": {},
                                        "esign_status": "string",
                                        "is_contract": true,
                                        "contract_status": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "documents"
                ],
                "summary": "Dokument ändern: Inhalt (HTML, wird wie im Editor bereinigt), metadata und bei Verträgen der Vertragsstatus. Gesperrte Dokumente (unterschrieben, zur Unterschrift versendet, aktiver Vertrag) erlauben nur noch zulässige Statuswechsel (z. B. aktiv -> beendet), sonst 409",
                "operationId": "putDocumentsById",
                "x-required-scopes": [
                    "documents:write"
                ],
                "x-feature-flag": "documents",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DocumentsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Documents"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "category_id": 1,
                                        "category_name": "string",
                                        "document_number": "string",
                                        "entity_type": "string",
                                        "entity_id": 1,
                                        "template_id": 1,
                                        "content": "string",
                                        "metadata": {},
                                        "esign_status": "string",
                                        "is_contract": true,
                                        "contract_status": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "documents"
                ],
                "summary": "Dokument ändern: Inhalt (HTML, wird wie im Editor bereinigt), metadata und bei Verträgen der Vertragsstatus. Gesperrte Dokumente (unterschrieben, zur Unterschrift versendet, aktiver Vertrag) erlauben nur noch zulässige Statuswechsel (z. B. aktiv -> beendet), sonst 409",
                "operationId": "patchDocumentsById",
                "x-required-scopes": [
                    "documents:write"
                ],
                "x-feature-flag": "documents",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DocumentsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Documents"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "category_id": 1,
                                        "category_name": "string",
                                        "document_number": "string",
                                        "entity_type": "string",
                                        "entity_id": 1,
                                        "template_id": 1,
                                        "content": "string",
                                        "metadata": {},
                                        "esign_status": "string",
                                        "is_contract": true,
                                        "contract_status": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "documents"
                ],
                "summary": "Dokument löschen wie in der Verwaltung (offene Abrechnungspositionen der Dokumentpositionen werden storniert, eine ersetzte Standgebühr wird wiederhergestellt). Gesperrte Dokumente: 409",
                "operationId": "deleteDocumentsById",
                "x-required-scopes": [
                    "documents:write"
                ],
                "x-feature-flag": "documents",
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/documents/{id}/pdf": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "documents"
                ],
                "summary": "Dokument als PDF herunterladen. variant=auto (Standard) liefert bei elektronisch unterschriebenen Verträgen das unterschriebene PDF, sonst das erzeugte PDF; variant=signed oder variant=generated erzwingt eine Variante. Der Header X-Document-Variant sagt, welche geliefert wurde",
                "operationId": "getDocumentsByIdPdf",
                "x-required-scopes": [
                    "documents:read"
                ],
                "x-feature-flag": "documents",
                "responses": {
                    "200": {
                        "description": "Die Datei",
                        "content": {
                            "application/pdf": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/submissions": {
            "get": {
                "tags": [
                    "submissions"
                ],
                "summary": "Alle Einreichungen auflisten",
                "operationId": "getSubmissions",
                "x-required-scopes": [
                    "submissions:read"
                ],
                "x-feature-flag": "submissions",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": true,
                        "description": "Nach Event-Schlüssel filtern (erforderlich)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Einreichungsstatus filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "participant_id",
                        "in": "query",
                        "required": false,
                        "description": "Nach Teilnehmer-ID filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Einreichungstyp-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (history)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Submissions"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "event_submission_id": 1,
                                            "event_participant_id": 1,
                                            "status": "string",
                                            "submitted_at": "2026-01-15T10:00:00+01:00",
                                            "value_text": "string",
                                            "value_file": "string",
                                            "reviewed_at": "2026-01-15T10:00:00+01:00",
                                            "reviewed_by": 1,
                                            "reviewer_name": "string",
                                            "review_notes": "string",
                                            "revision_count": 1,
                                            "is_late": true,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00",
                                            "type_name": "string",
                                            "type_key": "string"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "submissions"
                ],
                "summary": "Einreichung abgeben (für Datei-Anforderungen als multipart/form-data mit dem Feld \"file\", sonst JSON mit \"value\"). Es gelten dieselben Regeln wie im Ausstellerportal: Frist, erlaubte Dateitypen und -größe, neue Version nur nach Ablehnung oder Überarbeitungswunsch (sonst 409)",
                "operationId": "postSubmissions",
                "x-required-scopes": [
                    "submissions:write"
                ],
                "x-feature-flag": "submissions",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SubmissionsCreateInput"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SubmissionsCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/submissions/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "submissions"
                ],
                "summary": "Einzelne Einreichung abrufen",
                "operationId": "getSubmissionsById",
                "x-required-scopes": [
                    "submissions:read"
                ],
                "x-feature-flag": "submissions",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Submissions"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_submission_id": 1,
                                        "event_participant_id": 1,
                                        "status": "string",
                                        "submitted_at": "2026-01-15T10:00:00+01:00",
                                        "value_text": "string",
                                        "value_file": "string",
                                        "reviewed_at": "2026-01-15T10:00:00+01:00",
                                        "reviewed_by": 1,
                                        "reviewer_name": "string",
                                        "review_notes": "string",
                                        "revision_count": 1,
                                        "is_late": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00",
                                        "type_name": "string",
                                        "type_key": "string"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "submissions"
                ],
                "summary": "Einreichungsstatus aktualisieren",
                "operationId": "putSubmissionsById",
                "x-required-scopes": [
                    "submissions:write"
                ],
                "x-feature-flag": "submissions",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SubmissionsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Submissions"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_submission_id": 1,
                                        "event_participant_id": 1,
                                        "status": "string",
                                        "submitted_at": "2026-01-15T10:00:00+01:00",
                                        "value_text": "string",
                                        "value_file": "string",
                                        "reviewed_at": "2026-01-15T10:00:00+01:00",
                                        "reviewed_by": 1,
                                        "reviewer_name": "string",
                                        "review_notes": "string",
                                        "revision_count": 1,
                                        "is_late": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00",
                                        "type_name": "string",
                                        "type_key": "string"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "submissions"
                ],
                "summary": "Einreichungsstatus aktualisieren",
                "operationId": "patchSubmissionsById",
                "x-required-scopes": [
                    "submissions:write"
                ],
                "x-feature-flag": "submissions",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SubmissionsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Submissions"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_submission_id": 1,
                                        "event_participant_id": 1,
                                        "status": "string",
                                        "submitted_at": "2026-01-15T10:00:00+01:00",
                                        "value_text": "string",
                                        "value_file": "string",
                                        "reviewed_at": "2026-01-15T10:00:00+01:00",
                                        "reviewed_by": 1,
                                        "reviewer_name": "string",
                                        "review_notes": "string",
                                        "revision_count": 1,
                                        "is_late": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00",
                                        "type_name": "string",
                                        "type_key": "string"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/service-orders": {
            "get": {
                "tags": [
                    "service-orders"
                ],
                "summary": "Alle Bestellungen auflisten",
                "operationId": "getServiceOrders",
                "x-required-scopes": [
                    "service_orders:read"
                ],
                "x-feature-flag": "service_orders",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Bestellungsstatus filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "participant_id",
                        "in": "query",
                        "required": false,
                        "description": "Nach Teilnehmer-ID filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order_number",
                        "in": "query",
                        "required": false,
                        "description": "Nach Bestellnummer filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (order_number, total, status, submitted_at, created_at)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (items, participant)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServiceOrders"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "order_number": "string",
                                            "event_participant_id": 1,
                                            "status": "string",
                                            "subtotal": 100,
                                            "tax_total": 100,
                                            "total": 100,
                                            "currency": "string",
                                            "notes": "string",
                                            "submitted_at": "2026-01-15T10:00:00+01:00",
                                            "confirmed_at": "2026-01-15T10:00:00+01:00",
                                            "cancelled_at": "2026-01-15T10:00:00+01:00",
                                            "cancellation_reason": "string",
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/service-orders/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "service-orders"
                ],
                "summary": "Einzelne Bestellung abrufen",
                "operationId": "getServiceOrdersById",
                "x-required-scopes": [
                    "service_orders:read"
                ],
                "x-feature-flag": "service_orders",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/ServiceOrders"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "order_number": "string",
                                        "event_participant_id": 1,
                                        "status": "string",
                                        "subtotal": 100,
                                        "tax_total": 100,
                                        "total": 100,
                                        "currency": "string",
                                        "notes": "string",
                                        "submitted_at": "2026-01-15T10:00:00+01:00",
                                        "confirmed_at": "2026-01-15T10:00:00+01:00",
                                        "cancelled_at": "2026-01-15T10:00:00+01:00",
                                        "cancellation_reason": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "service-orders"
                ],
                "summary": "Status ändern: submitted → confirmed oder cancelled, confirmed → completed oder cancelled (\"cancellation_reason\" optional). Beim Stornieren wird der Bestand zurückgebucht und offene abrechenbare Leistungen entfallen; eine bereits abgerechnete Bestellung kann nicht storniert werden (409, Korrektur über Gutschrift). Löst service_order.confirmed / .completed / .cancelled aus",
                "operationId": "patchServiceOrdersById",
                "x-required-scopes": [
                    "service_orders:write"
                ],
                "x-feature-flag": "service_orders",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ServiceOrdersInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/ServiceOrders"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "order_number": "string",
                                        "event_participant_id": 1,
                                        "status": "string",
                                        "subtotal": 100,
                                        "tax_total": 100,
                                        "total": 100,
                                        "currency": "string",
                                        "notes": "string",
                                        "submitted_at": "2026-01-15T10:00:00+01:00",
                                        "confirmed_at": "2026-01-15T10:00:00+01:00",
                                        "cancelled_at": "2026-01-15T10:00:00+01:00",
                                        "cancellation_reason": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/service-orders/{id}/status": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "post": {
                "tags": [
                    "service-orders"
                ],
                "summary": "Wie PATCH /service-orders/{id} (für Clients, die kein PATCH senden können)",
                "operationId": "postServiceOrdersByIdStatus",
                "x-required-scopes": [
                    "service_orders:write"
                ],
                "x-feature-flag": "service_orders",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/plans": {
            "get": {
                "tags": [
                    "plans"
                ],
                "summary": "Alle Lagepläne auflisten",
                "operationId": "getPlans",
                "x-required-scopes": [
                    "plans:read"
                ],
                "x-feature-flag": "plans",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "required": false,
                        "description": "Nach Aktivstatus filtern (0 oder 1)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (plan_name, plan_key, area_name, sort_order, created_at, updated_at)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (booth_count, booths)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Plans"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "event_id": 1,
                                            "event_title": "string",
                                            "plan_key": "string",
                                            "plan_name": "string",
                                            "description": "string",
                                            "area_name": "string",
                                            "width": 100,
                                            "height": 100,
                                            "background_image": "string",
                                            "floor_plan_svg": "string",
                                            "floor_plan_width": 100,
                                            "floor_plan_height": 100,
                                            "grid_size": 1,
                                            "scale_factor": 100,
                                            "is_active": true,
                                            "sort_order": 1,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/plans/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "plans"
                ],
                "summary": "Einzelnen Lageplan abrufen",
                "operationId": "getPlansById",
                "x-required-scopes": [
                    "plans:read"
                ],
                "x-feature-flag": "plans",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Plans"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_id": 1,
                                        "event_title": "string",
                                        "plan_key": "string",
                                        "plan_name": "string",
                                        "description": "string",
                                        "area_name": "string",
                                        "width": 100,
                                        "height": 100,
                                        "background_image": "string",
                                        "floor_plan_svg": "string",
                                        "floor_plan_width": 100,
                                        "floor_plan_height": 100,
                                        "grid_size": 1,
                                        "scale_factor": 100,
                                        "is_active": true,
                                        "sort_order": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/custom-fields/definitions": {
            "get": {
                "tags": [
                    "custom-fields"
                ],
                "summary": "Alle benutzerdefinierten Felder auflisten",
                "operationId": "getCustomFieldsDefinitions",
                "x-required-scopes": [
                    "custom_fields:read"
                ],
                "parameters": [
                    {
                        "name": "entity_type",
                        "in": "query",
                        "required": false,
                        "description": "Definitionen nach Entitätstyp filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "required": false,
                        "description": "Definitionen nach Aktivstatus filtern (0 oder 1)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/custom-fields/{entity_type}/{entity_id}": {
            "parameters": [
                {
                    "name": "entity_type",
                    "in": "path",
                    "required": true,
                    "description": "Pfadwert (siehe Beschreibung des Endpunkts)",
                    "schema": {
                        "type": "string"
                    }
                },
                {
                    "name": "entity_id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "custom-fields"
                ],
                "summary": "Feldwerte für Entität abrufen",
                "operationId": "getCustomFieldsByEntityTypeByEntityId",
                "x-required-scopes": [
                    "custom_fields:read"
                ],
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/CustomFields"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "form_id": 1,
                                        "entity_type": "string",
                                        "field_key": "string",
                                        "field_label": "string",
                                        "field_type": "string",
                                        "section_key": "string",
                                        "field_options": "string",
                                        "validation_rules": "string",
                                        "is_required": true,
                                        "is_searchable": true,
                                        "applicant_visibility": "string",
                                        "is_active": true,
                                        "display_order": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "custom-fields"
                ],
                "summary": "Feldwerte aktualisieren",
                "operationId": "putCustomFieldsByEntityTypeByEntityId",
                "x-required-scopes": [
                    "custom_fields:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CustomFieldsInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/CustomFields"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "form_id": 1,
                                        "entity_type": "string",
                                        "field_key": "string",
                                        "field_label": "string",
                                        "field_type": "string",
                                        "section_key": "string",
                                        "field_options": "string",
                                        "validation_rules": "string",
                                        "is_required": true,
                                        "is_searchable": true,
                                        "applicant_visibility": "string",
                                        "is_active": true,
                                        "display_order": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/services": {
            "get": {
                "tags": [
                    "services"
                ],
                "summary": "Alle Dienstleistungen auflisten",
                "operationId": "getServices",
                "x-required-scopes": [
                    "services:read"
                ],
                "x-feature-flag": "services",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Suchbegriff zum Filtern der Ergebnisse",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category_id",
                        "in": "query",
                        "required": false,
                        "description": "Nach Dienstleistungskategorie-ID filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "required": false,
                        "description": "Nach Aktivstatus filtern (0 oder 1)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (category)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Services"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "category_id": 1,
                                            "category_name": "string",
                                            "service_key": "string",
                                            "service_name": "string",
                                            "description": "string",
                                            "short_description": "string",
                                            "unit": "string",
                                            "unit_label": "string",
                                            "base_price": 100,
                                            "tax_rate": 100,
                                            "min_quantity": 1,
                                            "max_quantity": 1,
                                            "quantity_step": 1,
                                            "requires_specification": true,
                                            "specification_label": "string",
                                            "specification_placeholder": "string",
                                            "lead_time_days": 1,
                                            "image_filename": "string",
                                            "is_active": true,
                                            "sort_order": 1,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/services/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "services"
                ],
                "summary": "Einzelne Dienstleistung abrufen",
                "operationId": "getServicesById",
                "x-required-scopes": [
                    "services:read"
                ],
                "x-feature-flag": "services",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Services"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "category_id": 1,
                                        "category_name": "string",
                                        "service_key": "string",
                                        "service_name": "string",
                                        "description": "string",
                                        "short_description": "string",
                                        "unit": "string",
                                        "unit_label": "string",
                                        "base_price": 100,
                                        "tax_rate": 100,
                                        "min_quantity": 1,
                                        "max_quantity": 1,
                                        "quantity_step": 1,
                                        "requires_specification": true,
                                        "specification_label": "string",
                                        "specification_placeholder": "string",
                                        "lead_time_days": 1,
                                        "image_filename": "string",
                                        "is_active": true,
                                        "sort_order": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/service-categories": {
            "get": {
                "tags": [
                    "service-categories"
                ],
                "summary": "Dienstleistungskategorien auflisten (standardmäßig aktive; is_active=all für alle)",
                "operationId": "getServiceCategories",
                "x-required-scopes": [
                    "services:read"
                ],
                "x-feature-flag": "services",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "required": false,
                        "description": "Standard: nur aktive Einträge; 0 = nur inaktive, all = alle",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServiceCategories"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "category_key": "string",
                                            "category_name": "string",
                                            "description": "string",
                                            "color": "string",
                                            "is_active": true,
                                            "sort_order": 1,
                                            "service_count": 1,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/service-categories/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "service-categories"
                ],
                "summary": "Einzelne Dienstleistungskategorie abrufen",
                "operationId": "getServiceCategoriesById",
                "x-required-scopes": [
                    "services:read"
                ],
                "x-feature-flag": "services",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/ServiceCategories"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "category_key": "string",
                                        "category_name": "string",
                                        "description": "string",
                                        "color": "string",
                                        "is_active": true,
                                        "sort_order": 1,
                                        "service_count": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/event-services": {
            "get": {
                "tags": [
                    "event-services"
                ],
                "summary": "Dienstleistungen eines Events auflisten (event_key oder event_id ist Pflicht)",
                "operationId": "getEventServices",
                "x-required-scopes": [
                    "services:read"
                ],
                "x-feature-flag": "services",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Event-Schlüssel (event_key oder event_id ist Pflicht)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "event_id",
                        "in": "query",
                        "required": false,
                        "description": "Event-ID (Alternative zu event_key)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "booth_type_key",
                        "in": "query",
                        "required": false,
                        "description": "Nur Dienstleistungen, die für diesen Standtyp bestellbar sind",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "required": false,
                        "description": "Standard: eingeschaltete Angebote; all = auch ausgeschaltete",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/EventServices"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "event_id": 1,
                                            "service_id": 1,
                                            "service_key": "string",
                                            "service_name": "string",
                                            "category_key": "string",
                                            "category_name": "string",
                                            "unit": "string",
                                            "base_price": 100,
                                            "price_override": 100,
                                            "early_bird_price": 100,
                                            "early_bird_deadline": "2026-01-15T10:00:00+01:00",
                                            "early_bird_active": true,
                                            "effective_price": 100,
                                            "tax_rate": 100,
                                            "order_deadline": "2026-01-15T10:00:00+01:00",
                                            "max_quantity_per_participant": 1,
                                            "total_inventory": 1,
                                            "remaining_inventory": 1,
                                            "is_active": true,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/event-services/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "event-services"
                ],
                "summary": "Einzelne Event-Dienstleistung mit Bestellstatistik abrufen",
                "operationId": "getEventServicesById",
                "x-required-scopes": [
                    "services:read"
                ],
                "x-feature-flag": "services",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/EventServices"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_id": 1,
                                        "service_id": 1,
                                        "service_key": "string",
                                        "service_name": "string",
                                        "category_key": "string",
                                        "category_name": "string",
                                        "unit": "string",
                                        "base_price": 100,
                                        "price_override": 100,
                                        "early_bird_price": 100,
                                        "early_bird_deadline": "2026-01-15T10:00:00+01:00",
                                        "early_bird_active": true,
                                        "effective_price": 100,
                                        "tax_rate": 100,
                                        "order_deadline": "2026-01-15T10:00:00+01:00",
                                        "max_quantity_per_participant": 1,
                                        "total_inventory": 1,
                                        "remaining_inventory": 1,
                                        "is_active": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/submission-types": {
            "get": {
                "tags": [
                    "submission-types"
                ],
                "summary": "Einreichungstypen auflisten (standardmäßig aktive; is_active=all für alle)",
                "operationId": "getSubmissionTypes",
                "x-required-scopes": [
                    "submissions:read"
                ],
                "x-feature-flag": "submissions",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "required": false,
                        "description": "Standard: nur aktive Einträge; 0 = nur inaktive, all = alle",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/SubmissionTypes"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "type_key": "string",
                                            "type_name": "string",
                                            "description": "string",
                                            "input_type": "string",
                                            "custom_field_key": "string",
                                            "allowed_extensions": [],
                                            "max_file_size_mb": 1,
                                            "is_required": true,
                                            "requires_approval": true,
                                            "category_keys": [],
                                            "help_text": "string",
                                            "example_url": "string",
                                            "is_active": true,
                                            "sort_order": 1,
                                            "event_count": 1,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/submission-types/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "submission-types"
                ],
                "summary": "Einzelnen Einreichungstyp abrufen",
                "operationId": "getSubmissionTypesById",
                "x-required-scopes": [
                    "submissions:read"
                ],
                "x-feature-flag": "submissions",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/SubmissionTypes"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "type_key": "string",
                                        "type_name": "string",
                                        "description": "string",
                                        "input_type": "string",
                                        "custom_field_key": "string",
                                        "allowed_extensions": [],
                                        "max_file_size_mb": 1,
                                        "is_required": true,
                                        "requires_approval": true,
                                        "category_keys": [],
                                        "help_text": "string",
                                        "example_url": "string",
                                        "is_active": true,
                                        "sort_order": 1,
                                        "event_count": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/list-templates": {
            "get": {
                "tags": [
                    "list-templates"
                ],
                "summary": "Listenvorlagen auflisten (standardmäßig nur aktive; is_active=all für alle)",
                "operationId": "getListTemplates",
                "x-required-scopes": [
                    "lists:read"
                ],
                "x-feature-flag": "lists",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "parent_entity_type",
                        "in": "query",
                        "required": false,
                        "description": "event_participant (Standard), event oder contact",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "required": false,
                        "description": "Standard: nur aktive Einträge; 0 = nur inaktive, all = alle",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ListTemplates"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "template_key": "string",
                                            "name": "string",
                                            "description": "string",
                                            "parent_entity_type": "string",
                                            "category_keys": [],
                                            "event_keys": [],
                                            "exhibitor_access": "string",
                                            "min_entries": 1,
                                            "max_entries": 1,
                                            "is_active": true,
                                            "entry_count": 1,
                                            "fields": []
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/list-templates/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "list-templates"
                ],
                "summary": "Eine Listenvorlage mit ihren Feldern abrufen",
                "operationId": "getListTemplatesById",
                "x-required-scopes": [
                    "lists:read"
                ],
                "x-feature-flag": "lists",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/ListTemplates"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "template_key": "string",
                                        "name": "string",
                                        "description": "string",
                                        "parent_entity_type": "string",
                                        "category_keys": [],
                                        "event_keys": [],
                                        "exhibitor_access": "string",
                                        "min_entries": 1,
                                        "max_entries": 1,
                                        "is_active": true,
                                        "entry_count": 1,
                                        "fields": []
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/list-entries": {
            "get": {
                "tags": [
                    "list-entries"
                ],
                "summary": "Einträge einer Liste auflisten (template_id oder template_key ist Pflicht)",
                "operationId": "getListEntries",
                "x-required-scopes": [
                    "lists:read"
                ],
                "x-feature-flag": "lists",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "template_id",
                        "in": "query",
                        "required": false,
                        "description": "ID der Liste (alternativ template_key)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "template_key",
                        "in": "query",
                        "required": false,
                        "description": "Schlüssel der Liste, zusammen mit parent_entity_type",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "parent_entity_type",
                        "in": "query",
                        "required": false,
                        "description": "event_participant (Standard), event oder contact",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "parent_entity_id",
                        "in": "query",
                        "required": false,
                        "description": "Nur die Einträge dieses Teilnehmers, Events oder Kontakts",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nur Teilnehmerlisten: die Einträge aller Teilnehmer dieses Events",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Suche in den Werten",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ListEntries"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "template_id": 1,
                                            "template_key": "string",
                                            "parent_entity_type": "string",
                                            "parent_entity_id": 1,
                                            "values": {},
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "list-entries"
                ],
                "summary": "Einen Eintrag hinzufügen",
                "operationId": "postListEntries",
                "x-required-scopes": [
                    "lists:write"
                ],
                "x-feature-flag": "lists",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ListEntriesCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/list-entries/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "list-entries"
                ],
                "summary": "Einen Eintrag abrufen",
                "operationId": "getListEntriesById",
                "x-required-scopes": [
                    "lists:read"
                ],
                "x-feature-flag": "lists",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/ListEntries"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "template_id": 1,
                                        "template_key": "string",
                                        "parent_entity_type": "string",
                                        "parent_entity_id": 1,
                                        "values": {},
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "list-entries"
                ],
                "summary": "Die angegebenen Werte eines Eintrags ändern (die übrigen bleiben)",
                "operationId": "putListEntriesById",
                "x-required-scopes": [
                    "lists:write"
                ],
                "x-feature-flag": "lists",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ListEntriesInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/ListEntries"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "template_id": 1,
                                        "template_key": "string",
                                        "parent_entity_type": "string",
                                        "parent_entity_id": 1,
                                        "values": {},
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "list-entries"
                ],
                "summary": "Die angegebenen Werte eines Eintrags ändern (die übrigen bleiben)",
                "operationId": "patchListEntriesById",
                "x-required-scopes": [
                    "lists:write"
                ],
                "x-feature-flag": "lists",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ListEntriesInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/ListEntries"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "template_id": 1,
                                        "template_key": "string",
                                        "parent_entity_type": "string",
                                        "parent_entity_id": 1,
                                        "values": {},
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "list-entries"
                ],
                "summary": "Einen Eintrag löschen",
                "operationId": "deleteListEntriesById",
                "x-required-scopes": [
                    "lists:write"
                ],
                "x-feature-flag": "lists",
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/newsletter": {
            "get": {
                "tags": [
                    "newsletter"
                ],
                "summary": "Alle Abonnenten auflisten",
                "operationId": "getNewsletter",
                "x-required-scopes": [
                    "newsletter:read"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Suchbegriff zum Filtern der Ergebnisse",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Nach Abonnentenstatus filtern (confirmed, pending, unsubscribed)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "from_date",
                        "in": "query",
                        "required": false,
                        "description": "Abonnenten ab diesem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to_date",
                        "in": "query",
                        "required": false,
                        "description": "Abonnenten bis zu diesem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Sortierfeld (email, name, created_at, confirmed_at)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sortierrichtung (ASC oder DESC, Standard: DESC)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Newsletter"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "email": "string",
                                            "name": "string",
                                            "contact_id": 1,
                                            "status": "string",
                                            "confirmed_at": "2026-01-15T10:00:00+01:00",
                                            "unsubscribed_at": "2026-01-15T10:00:00+01:00",
                                            "created_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "newsletter"
                ],
                "summary": "E-Mail-Adresse abonnieren",
                "operationId": "postNewsletter",
                "x-required-scopes": [
                    "newsletter:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/NewsletterCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "newsletter"
                ],
                "summary": "Nach E-Mail-Adresse abmelden",
                "operationId": "deleteNewsletter",
                "x-required-scopes": [
                    "newsletter:write"
                ],
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/newsletter/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "delete": {
                "tags": [
                    "newsletter"
                ],
                "summary": "Nach Abonnenten-ID abmelden",
                "operationId": "deleteNewsletterById",
                "x-required-scopes": [
                    "newsletter:write"
                ],
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/notes": {
            "get": {
                "tags": [
                    "notes"
                ],
                "summary": "Alle Notizen auflisten",
                "operationId": "getNotes",
                "description": "Der erforderliche Bereich hängt vom Entitätstyp ab: Kontakt-Notizen benötigen den Bereich \"contacts\", Bewerbungs-Notizen \"applications\" usw. Notizen zu anderen Entitätstypen (z. B. Stände oder Aufgaben) sind über die API nicht zugänglich (404). Ein Schlüssel handelt für die Person, die ihn erstellt hat: Er kann nur deren eigene Notizen ändern oder löschen, außer sie ist Super-Admin (sonst 403). Lesen und Anheften ist bei allen Notizen möglich; \"can_modify\" zeigt, ob der Schlüssel eine Notiz ändern darf.",
                "x-required-scopes": [
                    "contacts:read",
                    "applications:read",
                    "participants:read",
                    "invoices:read",
                    "events:read"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "entity_type",
                        "in": "query",
                        "required": true,
                        "description": "Entitätstyp (erforderlich: contact, application, event_participant, invoice, event)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "entity_id",
                        "in": "query",
                        "required": true,
                        "description": "Entitäts-ID (erforderlich)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "note_type",
                        "in": "query",
                        "required": false,
                        "description": "Nach Notiztyp filtern (info, warning, followup, internal)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "is_pinned",
                        "in": "query",
                        "required": false,
                        "description": "Nach Anheftstatus filtern (1)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Notes"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "entity_type": "string",
                                            "entity_id": 1,
                                            "admin_id": 1,
                                            "admin_name": "string",
                                            "note_text": "string",
                                            "note_type": "string",
                                            "is_pinned": true,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1,
                                        "entity_type": "contact",
                                        "entity_id": 123
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "notes"
                ],
                "summary": "Neue Notiz erstellen",
                "operationId": "postNotes",
                "description": "Der erforderliche Bereich hängt vom Entitätstyp ab: Kontakt-Notizen benötigen den Bereich \"contacts\", Bewerbungs-Notizen \"applications\" usw. Notizen zu anderen Entitätstypen (z. B. Stände oder Aufgaben) sind über die API nicht zugänglich (404). Ein Schlüssel handelt für die Person, die ihn erstellt hat: Er kann nur deren eigene Notizen ändern oder löschen, außer sie ist Super-Admin (sonst 403). Lesen und Anheften ist bei allen Notizen möglich; \"can_modify\" zeigt, ob der Schlüssel eine Notiz ändern darf.",
                "x-required-scopes": [
                    "contacts:write",
                    "applications:write",
                    "participants:write",
                    "invoices:write",
                    "events:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/NotesCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/notes/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "notes"
                ],
                "summary": "Einzelne Notiz abrufen",
                "operationId": "getNotesById",
                "description": "Der erforderliche Bereich hängt vom Entitätstyp ab: Kontakt-Notizen benötigen den Bereich \"contacts\", Bewerbungs-Notizen \"applications\" usw. Notizen zu anderen Entitätstypen (z. B. Stände oder Aufgaben) sind über die API nicht zugänglich (404). Ein Schlüssel handelt für die Person, die ihn erstellt hat: Er kann nur deren eigene Notizen ändern oder löschen, außer sie ist Super-Admin (sonst 403). Lesen und Anheften ist bei allen Notizen möglich; \"can_modify\" zeigt, ob der Schlüssel eine Notiz ändern darf.",
                "x-required-scopes": [
                    "contacts:read",
                    "applications:read",
                    "participants:read",
                    "invoices:read",
                    "events:read"
                ],
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Notes"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "entity_type": "string",
                                        "entity_id": 1,
                                        "admin_id": 1,
                                        "admin_name": "string",
                                        "note_text": "string",
                                        "note_type": "string",
                                        "is_pinned": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "put": {
                "tags": [
                    "notes"
                ],
                "summary": "Notiz aktualisieren",
                "operationId": "putNotesById",
                "description": "Der erforderliche Bereich hängt vom Entitätstyp ab: Kontakt-Notizen benötigen den Bereich \"contacts\", Bewerbungs-Notizen \"applications\" usw. Notizen zu anderen Entitätstypen (z. B. Stände oder Aufgaben) sind über die API nicht zugänglich (404). Ein Schlüssel handelt für die Person, die ihn erstellt hat: Er kann nur deren eigene Notizen ändern oder löschen, außer sie ist Super-Admin (sonst 403). Lesen und Anheften ist bei allen Notizen möglich; \"can_modify\" zeigt, ob der Schlüssel eine Notiz ändern darf.",
                "x-required-scopes": [
                    "contacts:write",
                    "applications:write",
                    "participants:write",
                    "invoices:write",
                    "events:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/NotesInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Notes"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "entity_type": "string",
                                        "entity_id": 1,
                                        "admin_id": 1,
                                        "admin_name": "string",
                                        "note_text": "string",
                                        "note_type": "string",
                                        "is_pinned": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "patch": {
                "tags": [
                    "notes"
                ],
                "summary": "Notiz aktualisieren",
                "operationId": "patchNotesById",
                "description": "Der erforderliche Bereich hängt vom Entitätstyp ab: Kontakt-Notizen benötigen den Bereich \"contacts\", Bewerbungs-Notizen \"applications\" usw. Notizen zu anderen Entitätstypen (z. B. Stände oder Aufgaben) sind über die API nicht zugänglich (404). Ein Schlüssel handelt für die Person, die ihn erstellt hat: Er kann nur deren eigene Notizen ändern oder löschen, außer sie ist Super-Admin (sonst 403). Lesen und Anheften ist bei allen Notizen möglich; \"can_modify\" zeigt, ob der Schlüssel eine Notiz ändern darf.",
                "x-required-scopes": [
                    "contacts:write",
                    "applications:write",
                    "participants:write",
                    "invoices:write",
                    "events:write"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/NotesInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Notes"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "entity_type": "string",
                                        "entity_id": 1,
                                        "admin_id": 1,
                                        "admin_name": "string",
                                        "note_text": "string",
                                        "note_type": "string",
                                        "is_pinned": true,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "notes"
                ],
                "summary": "Notiz löschen",
                "operationId": "deleteNotesById",
                "description": "Der erforderliche Bereich hängt vom Entitätstyp ab: Kontakt-Notizen benötigen den Bereich \"contacts\", Bewerbungs-Notizen \"applications\" usw. Notizen zu anderen Entitätstypen (z. B. Stände oder Aufgaben) sind über die API nicht zugänglich (404). Ein Schlüssel handelt für die Person, die ihn erstellt hat: Er kann nur deren eigene Notizen ändern oder löschen, außer sie ist Super-Admin (sonst 403). Lesen und Anheften ist bei allen Notizen möglich; \"can_modify\" zeigt, ob der Schlüssel eine Notiz ändern darf.",
                "x-required-scopes": [
                    "contacts:write",
                    "applications:write",
                    "participants:write",
                    "invoices:write",
                    "events:write"
                ],
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/notes/{id}/pin": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "post": {
                "tags": [
                    "notes"
                ],
                "summary": "Notiz anheften/lösen",
                "operationId": "postNotesByIdPin",
                "description": "Der erforderliche Bereich hängt vom Entitätstyp ab: Kontakt-Notizen benötigen den Bereich \"contacts\", Bewerbungs-Notizen \"applications\" usw. Notizen zu anderen Entitätstypen (z. B. Stände oder Aufgaben) sind über die API nicht zugänglich (404). Ein Schlüssel handelt für die Person, die ihn erstellt hat: Er kann nur deren eigene Notizen ändern oder löschen, außer sie ist Super-Admin (sonst 403). Lesen und Anheften ist bei allen Notizen möglich; \"can_modify\" zeigt, ob der Schlüssel eine Notiz ändern darf.",
                "x-required-scopes": [
                    "contacts:write",
                    "applications:write",
                    "participants:write",
                    "invoices:write",
                    "events:write"
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/schedules": {
            "get": {
                "tags": [
                    "schedules"
                ],
                "summary": "Alle Zeitplaneinträge auflisten",
                "operationId": "getSchedules",
                "x-required-scopes": [
                    "schedules:read"
                ],
                "x-feature-flag": "schedules",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern (erforderlich)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "required": false,
                        "description": "Nach bestimmtem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "from_date",
                        "in": "query",
                        "required": false,
                        "description": "Einträge ab diesem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to_date",
                        "in": "query",
                        "required": false,
                        "description": "Einträge bis zu diesem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "location",
                        "in": "query",
                        "required": false,
                        "description": "Nach Standort filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "slot_type",
                        "in": "query",
                        "required": false,
                        "description": "Nach Slot-Typ filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "is_public",
                        "in": "query",
                        "required": false,
                        "description": "Nach öffentlicher Sichtbarkeit filtern (0 oder 1)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "description": "Verknüpfte Daten einschließen (assignments)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Schedules"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "event_id": 1,
                                            "event_title": "string",
                                            "slot_date": "2026-01-15T10:00:00+01:00",
                                            "start_time": "string",
                                            "end_time": "string",
                                            "location": "string",
                                            "title": "string",
                                            "description": "string",
                                            "slot_type": "string",
                                            "is_public": true,
                                            "show_in_public_agenda": true,
                                            "sort_order": 1,
                                            "created_at": "2026-01-15T10:00:00+01:00",
                                            "updated_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/schedules/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "schedules"
                ],
                "summary": "Einzelnen Eintrag abrufen",
                "operationId": "getSchedulesById",
                "x-required-scopes": [
                    "schedules:read"
                ],
                "x-feature-flag": "schedules",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Schedules"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "event_id": 1,
                                        "event_title": "string",
                                        "slot_date": "2026-01-15T10:00:00+01:00",
                                        "start_time": "string",
                                        "end_time": "string",
                                        "location": "string",
                                        "title": "string",
                                        "description": "string",
                                        "slot_type": "string",
                                        "is_public": true,
                                        "show_in_public_agenda": true,
                                        "sort_order": 1,
                                        "created_at": "2026-01-15T10:00:00+01:00",
                                        "updated_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/webhooks": {
            "get": {
                "tags": [
                    "webhooks"
                ],
                "summary": "Alle Webhooks auflisten",
                "operationId": "getWebhooks",
                "x-required-scopes": [
                    "webhooks:read"
                ],
                "x-feature-flag": "webhooks",
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Webhooks"
                                            }
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "name": "string",
                                            "url": "string",
                                            "events": [],
                                            "is_active": true,
                                            "retry_count": 1,
                                            "timeout_seconds": 1,
                                            "last_triggered_at": "2026-01-15T10:00:00+01:00",
                                            "last_success_at": "2026-01-15T10:00:00+01:00",
                                            "last_failure_at": "2026-01-15T10:00:00+01:00",
                                            "failure_count": 1,
                                            "secret": "string",
                                            "created_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "webhooks"
                ],
                "summary": "Neuen Webhook erstellen",
                "operationId": "postWebhooks",
                "x-required-scopes": [
                    "webhooks:write"
                ],
                "x-feature-flag": "webhooks",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/WebhooksCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angelegt; data.id ist die ID des neuen Datensatzes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/webhooks/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "webhooks"
                ],
                "summary": "Einzelnen Webhook abrufen",
                "operationId": "getWebhooksById",
                "x-required-scopes": [
                    "webhooks:read"
                ],
                "x-feature-flag": "webhooks",
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Webhooks"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "name": "string",
                                        "url": "string",
                                        "events": [],
                                        "is_active": true,
                                        "retry_count": 1,
                                        "timeout_seconds": 1,
                                        "last_triggered_at": "2026-01-15T10:00:00+01:00",
                                        "last_success_at": "2026-01-15T10:00:00+01:00",
                                        "last_failure_at": "2026-01-15T10:00:00+01:00",
                                        "failure_count": 1,
                                        "secret": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "delete": {
                "tags": [
                    "webhooks"
                ],
                "summary": "Webhook löschen",
                "operationId": "deleteWebhooksById",
                "x-required-scopes": [
                    "webhooks:write"
                ],
                "x-feature-flag": "webhooks",
                "responses": {
                    "204": {
                        "description": "Gelöscht (kein Inhalt)"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/webhooks/events": {
            "get": {
                "tags": [
                    "webhooks"
                ],
                "summary": "Verfügbare Event-Typen auflisten",
                "operationId": "getWebhooksEvents",
                "x-required-scopes": [
                    "webhooks:read"
                ],
                "x-feature-flag": "webhooks",
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/reports/revenue": {
            "get": {
                "tags": [
                    "reports"
                ],
                "summary": "Umsatzbericht abrufen",
                "operationId": "getReportsRevenue",
                "x-required-scopes": [
                    "reports:read"
                ],
                "parameters": [
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "description": "Startdatum des Berichts (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "description": "Enddatum des Berichts (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/reports/participants": {
            "get": {
                "tags": [
                    "reports"
                ],
                "summary": "Teilnehmerbericht abrufen",
                "operationId": "getReportsParticipants",
                "x-required-scopes": [
                    "reports:read"
                ],
                "parameters": [
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": true,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "description": "Startdatum des Berichts (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "description": "Enddatum des Berichts (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/reports/applications": {
            "get": {
                "tags": [
                    "reports"
                ],
                "summary": "Bewerbungsbericht abrufen",
                "operationId": "getReportsApplications",
                "x-required-scopes": [
                    "reports:read"
                ],
                "parameters": [
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "description": "Startdatum des Berichts (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "description": "Enddatum des Berichts (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/reports/payments": {
            "get": {
                "tags": [
                    "reports"
                ],
                "summary": "Zahlungsbericht abrufen",
                "operationId": "getReportsPayments",
                "x-required-scopes": [
                    "reports:read"
                ],
                "parameters": [
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "description": "Startdatum des Berichts (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "description": "Enddatum des Berichts (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/reports/overview": {
            "get": {
                "tags": [
                    "reports"
                ],
                "summary": "Übersichtsbericht abrufen (die Teilnehmerstatistik ist nur mit event_key enthalten, sonst null)",
                "operationId": "getReportsOverview",
                "x-required-scopes": [
                    "reports:read"
                ],
                "parameters": [
                    {
                        "name": "event_key",
                        "in": "query",
                        "required": false,
                        "description": "Nach Event-Schlüssel filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "description": "Startdatum des Berichts (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "description": "Enddatum des Berichts (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/audit-log": {
            "get": {
                "tags": [
                    "audit-log"
                ],
                "summary": "Alle Protokolleinträge auflisten",
                "operationId": "getAuditLog",
                "x-required-scopes": [
                    "audit:read"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "name": "action",
                        "in": "query",
                        "required": false,
                        "description": "Nach Aktionstyp filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "entity_type",
                        "in": "query",
                        "required": false,
                        "description": "Nach Entitätstyp filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "admin_id",
                        "in": "query",
                        "required": false,
                        "description": "Nach Administrator-ID filtern",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "description": "Einträge ab diesem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "description": "Einträge bis zu diesem Datum filtern (ISO 8601)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Suchbegriff zum Filtern der Ergebnisse",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Eine Seite mit Datensätzen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/AuditLog"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/PaginationMeta"
                                        }
                                    }
                                },
                                "example": {
                                    "data": [
                                        {
                                            "id": 1,
                                            "action": "string",
                                            "entity_type": "string",
                                            "entity_id": 1,
                                            "entity_title": "string",
                                            "description": "string",
                                            "old_values": {},
                                            "new_values": {},
                                            "admin_id": 1,
                                            "admin_name": "string",
                                            "ip_address": "string",
                                            "user_agent": "string",
                                            "created_at": "2026-01-15T10:00:00+01:00"
                                        }
                                    ],
                                    "meta": {
                                        "current_page": 1,
                                        "per_page": 25,
                                        "total": 1,
                                        "total_pages": 1
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/audit-log/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Numerische ID des Datensatzes",
                    "schema": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            ],
            "get": {
                "tags": [
                    "audit-log"
                ],
                "summary": "Einzelnen Eintrag abrufen",
                "operationId": "getAuditLogById",
                "x-required-scopes": [
                    "audit:read"
                ],
                "responses": {
                    "200": {
                        "description": "Der Datensatz",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/AuditLog"
                                        }
                                    }
                                },
                                "example": {
                                    "data": {
                                        "id": 1,
                                        "action": "string",
                                        "entity_type": "string",
                                        "entity_id": 1,
                                        "entity_title": "string",
                                        "description": "string",
                                        "old_values": {},
                                        "new_values": {},
                                        "admin_id": 1,
                                        "admin_name": "string",
                                        "ip_address": "string",
                                        "user_agent": "string",
                                        "created_at": "2026-01-15T10:00:00+01:00"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/calendar-feed": {
            "get": {
                "tags": [
                    "calendar"
                ],
                "summary": "iCal-Kalender-Feed abrufen",
                "operationId": "getCalendarFeed",
                "x-required-scopes": [
                    "calendar-feed:read"
                ],
                "responses": {
                    "200": {
                        "description": "Die Datei",
                        "content": {
                            "text/calendar": {
                                "schema": {
                                    "type": "string",
                                    "format": "text"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/bulk-import/contacts": {
            "post": {
                "tags": [
                    "bulk-import"
                ],
                "summary": "Kontakte importieren",
                "operationId": "postBulkImportContacts",
                "description": "Der Endpunkt /contacts erfordert den Bereich \"contacts\", der Endpunkt /participants erfordert den Bereich \"participants\".",
                "x-required-scopes": [
                    "contacts:write",
                    "participants:write"
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/api/v1/bulk-import/participants": {
            "post": {
                "tags": [
                    "bulk-import"
                ],
                "summary": "Teilnehmer importieren",
                "operationId": "postBulkImportParticipants",
                "description": "Der Endpunkt /contacts erfordert den Bereich \"contacts\", der Endpunkt /participants erfordert den Bereich \"participants\".",
                "x-required-scopes": [
                    "contacts:write",
                    "participants:write"
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ergebnis der Aktion",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "description": "Ergebnis der Aktion"
                                        }
                                    },
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationFailed"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "scheme": "bearer",
                "description": "API-Schlüssel als Bearer-Token: Authorization: Bearer IHR_API_SCHLUESSEL"
            },
            "apiKeyHeader": {
                "type": "apiKey",
                "in": "header",
                "name": "X-API-Key",
                "description": "Alternativ der API-Schlüssel im Header X-API-Key"
            }
        },
        "schemas": {
            "Error": {
                "type": "object",
                "required": [
                    "error"
                ],
                "properties": {
                    "error": {
                        "type": "string",
                        "description": "Lesbare Fehlermeldung"
                    }
                }
            },
            "ValidationError": {
                "type": "object",
                "required": [
                    "error",
                    "errors"
                ],
                "properties": {
                    "error": {
                        "type": "string",
                        "description": "Lesbare Fehlermeldung"
                    },
                    "errors": {
                        "type": "object",
                        "description": "Meldungen pro Feld",
                        "additionalProperties": {
                            "oneOf": [
                                {
                                    "type": "string"
                                },
                                {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                }
                            ]
                        }
                    }
                }
            },
            "PaginationMeta": {
                "type": "object",
                "additionalProperties": true,
                "required": [
                    "current_page",
                    "per_page",
                    "total",
                    "total_pages"
                ],
                "properties": {
                    "current_page": {
                        "type": "integer",
                        "minimum": 1
                    },
                    "per_page": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 100
                    },
                    "total": {
                        "type": "integer",
                        "minimum": 0
                    },
                    "total_pages": {
                        "type": "integer",
                        "minimum": 0
                    }
                }
            },
            "Events": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "event_key": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "country": {
                        "type": "string"
                    },
                    "state": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "city": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "date_from": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "date_to": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "application_deadline": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "is_visible": {
                        "type": "boolean"
                    },
                    "image": {
                        "type": [
                            "object",
                            "null"
                        ]
                    }
                },
                "additionalProperties": true
            },
            "EventsInput": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "description": "Name des Events"
                    },
                    "event_key": {
                        "type": "string",
                        "description": "Eindeutiger Schlüssel für das Event: Buchstaben, Ziffern, \"_\" und \"-\", max. 100 Zeichen (wird automatisch generiert, wenn nicht angegeben). Bei einer Änderung per PUT/PATCH werden alle Verweise (Formulare, Bereiche, Felder, Kategorien, Dienstleistungen usw.) auf den neuen Schlüssel umgestellt. Ein bereits vergebener Schlüssel (auch im Papierkorb) ergibt 422"
                    },
                    "description": {
                        "type": "string",
                        "description": "Beschreibung des Events"
                    },
                    "date_from": {
                        "type": "string",
                        "description": "Startdatum (ISO 8601 Format)"
                    },
                    "date_to": {
                        "type": "string",
                        "description": "Enddatum (ISO 8601 Format)"
                    },
                    "country": {
                        "type": "string",
                        "description": "Ländercode (Standard: DE)"
                    },
                    "state": {
                        "type": "string",
                        "description": "Bundesland oder Region"
                    },
                    "city": {
                        "type": "string",
                        "description": "Stadtname"
                    },
                    "application_deadline": {
                        "type": "string",
                        "description": "Bewerbungsfrist (ISO 8601 Format)"
                    },
                    "is_visible": {
                        "type": "boolean",
                        "description": "Ob das Event öffentlich sichtbar ist"
                    },
                    "opening_hours": {
                        "type": "array",
                        "items": {},
                        "description": "Array von Öffnungszeiteneinträgen"
                    }
                }
            },
            "EventsCreateInput": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "description": "Name des Events"
                    },
                    "event_key": {
                        "type": "string",
                        "description": "Eindeutiger Schlüssel für das Event: Buchstaben, Ziffern, \"_\" und \"-\", max. 100 Zeichen (wird automatisch generiert, wenn nicht angegeben). Bei einer Änderung per PUT/PATCH werden alle Verweise (Formulare, Bereiche, Felder, Kategorien, Dienstleistungen usw.) auf den neuen Schlüssel umgestellt. Ein bereits vergebener Schlüssel (auch im Papierkorb) ergibt 422"
                    },
                    "description": {
                        "type": "string",
                        "description": "Beschreibung des Events"
                    },
                    "date_from": {
                        "type": "string",
                        "description": "Startdatum (ISO 8601 Format)"
                    },
                    "date_to": {
                        "type": "string",
                        "description": "Enddatum (ISO 8601 Format)"
                    },
                    "country": {
                        "type": "string",
                        "description": "Ländercode (Standard: DE)"
                    },
                    "state": {
                        "type": "string",
                        "description": "Bundesland oder Region"
                    },
                    "city": {
                        "type": "string",
                        "description": "Stadtname"
                    },
                    "application_deadline": {
                        "type": "string",
                        "description": "Bewerbungsfrist (ISO 8601 Format)"
                    },
                    "is_visible": {
                        "type": "boolean",
                        "description": "Ob das Event öffentlich sichtbar ist"
                    },
                    "opening_hours": {
                        "type": "array",
                        "items": {},
                        "description": "Array von Öffnungszeiteneinträgen"
                    }
                },
                "required": [
                    "title"
                ]
            },
            "Contacts": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "customer_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "company_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "first_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "last_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "address": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "postal_code": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "city": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "country": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "state": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "phone": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "fax": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "mobile": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "email": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "website": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "tax_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "rating": {
                        "type": "integer"
                    },
                    "account_access_enabled": {
                        "type": "boolean"
                    },
                    "has_account": {
                        "type": "boolean"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "ContactsInput": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "description": "E-Mail-Adresse"
                    },
                    "company_name": {
                        "type": "string",
                        "description": "Firmenname"
                    },
                    "first_name": {
                        "type": "string",
                        "description": "Vorname"
                    },
                    "last_name": {
                        "type": "string",
                        "description": "Nachname"
                    },
                    "phone": {
                        "type": "string",
                        "description": "Telefonnummer"
                    },
                    "fax": {
                        "type": "string",
                        "description": "Faxnummer"
                    },
                    "mobile": {
                        "type": "string",
                        "description": "Mobiltelefonnummer"
                    },
                    "customer_number": {
                        "type": "string",
                        "description": "Kundennummer"
                    },
                    "address": {
                        "type": "string",
                        "description": "Straßenadresse"
                    },
                    "postal_code": {
                        "type": "string",
                        "description": "Postleitzahl"
                    },
                    "city": {
                        "type": "string",
                        "description": "Stadt"
                    },
                    "country": {
                        "type": "string",
                        "description": "Ländercode"
                    },
                    "state": {
                        "type": "string",
                        "description": "Bundesland oder Region"
                    },
                    "website": {
                        "type": "string",
                        "description": "Website-URL"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Interne Notizen"
                    },
                    "tax_id": {
                        "type": "string",
                        "description": "Steuer-Identifikationsnummer"
                    },
                    "rating": {
                        "type": "integer",
                        "description": "Kontaktbewertung (1-5, Standard: 3)"
                    },
                    "account_access_enabled": {
                        "type": "boolean",
                        "description": "Ob der Kontakt Zugang zum Benutzerportal hat"
                    },
                    "category_keys": {
                        "type": "array",
                        "items": {},
                        "description": "Array von Kategorie-Schlüsseln zur Zuweisung"
                    },
                    "event_keys": {
                        "type": "array",
                        "items": {},
                        "description": "Array von Event-Schlüsseln zur Verknüpfung als Teilnehmer"
                    }
                }
            },
            "ContactsCreateInput": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "description": "E-Mail-Adresse"
                    },
                    "company_name": {
                        "type": "string",
                        "description": "Firmenname"
                    },
                    "first_name": {
                        "type": "string",
                        "description": "Vorname"
                    },
                    "last_name": {
                        "type": "string",
                        "description": "Nachname"
                    },
                    "phone": {
                        "type": "string",
                        "description": "Telefonnummer"
                    },
                    "fax": {
                        "type": "string",
                        "description": "Faxnummer"
                    },
                    "mobile": {
                        "type": "string",
                        "description": "Mobiltelefonnummer"
                    },
                    "customer_number": {
                        "type": "string",
                        "description": "Kundennummer"
                    },
                    "address": {
                        "type": "string",
                        "description": "Straßenadresse"
                    },
                    "postal_code": {
                        "type": "string",
                        "description": "Postleitzahl"
                    },
                    "city": {
                        "type": "string",
                        "description": "Stadt"
                    },
                    "country": {
                        "type": "string",
                        "description": "Ländercode"
                    },
                    "state": {
                        "type": "string",
                        "description": "Bundesland oder Region"
                    },
                    "website": {
                        "type": "string",
                        "description": "Website-URL"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Interne Notizen"
                    },
                    "tax_id": {
                        "type": "string",
                        "description": "Steuer-Identifikationsnummer"
                    },
                    "rating": {
                        "type": "integer",
                        "description": "Kontaktbewertung (1-5, Standard: 3)"
                    },
                    "account_access_enabled": {
                        "type": "boolean",
                        "description": "Ob der Kontakt Zugang zum Benutzerportal hat"
                    },
                    "category_keys": {
                        "type": "array",
                        "items": {},
                        "description": "Array von Kategorie-Schlüsseln zur Zuweisung"
                    },
                    "event_keys": {
                        "type": "array",
                        "items": {},
                        "description": "Array von Event-Schlüsseln zur Verknüpfung als Teilnehmer"
                    }
                }
            },
            "Participants": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "event_id": {
                        "type": "integer"
                    },
                    "contact_id": {
                        "type": "integer"
                    },
                    "is_confirmed": {
                        "type": "boolean"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "ParticipantsInput": {
                "type": "object",
                "properties": {
                    "event_key": {
                        "type": "string",
                        "description": "Event-Schlüssel zur Identifikation des Events"
                    },
                    "customer_number": {
                        "type": "string",
                        "description": "Kundennummer zur Identifikation des Kontakts"
                    },
                    "is_confirmed": {
                        "type": "boolean",
                        "description": "Ob die Teilnahme bestätigt ist"
                    }
                }
            },
            "ParticipantsCreateInput": {
                "type": "object",
                "properties": {
                    "event_key": {
                        "type": "string",
                        "description": "Event-Schlüssel zur Identifikation des Events"
                    },
                    "customer_number": {
                        "type": "string",
                        "description": "Kundennummer zur Identifikation des Kontakts"
                    },
                    "is_confirmed": {
                        "type": "boolean",
                        "description": "Ob die Teilnahme bestätigt ist"
                    }
                },
                "required": [
                    "event_key",
                    "customer_number"
                ]
            },
            "Applications": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "company_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "first_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "last_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "address": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "postal_code": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "city": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "country": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "state": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "phone": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "fax": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "mobile": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "email": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "website": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "tax_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "rating": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "ApplicationsInput": {
                "type": "object",
                "properties": {
                    "company_name": {
                        "type": "string",
                        "description": "Firmenname"
                    },
                    "first_name": {
                        "type": "string",
                        "description": "Vorname"
                    },
                    "last_name": {
                        "type": "string",
                        "description": "Nachname"
                    },
                    "email": {
                        "type": "string",
                        "description": "E-Mail-Adresse"
                    },
                    "phone": {
                        "type": "string",
                        "description": "Telefonnummer"
                    },
                    "address": {
                        "type": "string",
                        "description": "Straße"
                    },
                    "postal_code": {
                        "type": "string",
                        "description": "Postleitzahl"
                    },
                    "city": {
                        "type": "string",
                        "description": "Stadt"
                    },
                    "country": {
                        "type": "string",
                        "description": "Ländercode"
                    },
                    "website": {
                        "type": "string",
                        "description": "Website-URL"
                    },
                    "tax_id": {
                        "type": "string",
                        "description": "Steuernummer"
                    },
                    "rating": {
                        "type": "integer",
                        "description": "Bewertung der Bewerbung (1-5)"
                    }
                }
            },
            "Categories": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "category_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string"
                    },
                    "content": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "parent_category_id": {
                        "type": "integer"
                    },
                    "event_keys": {
                        "type": [
                            "array",
                            "null"
                        ],
                        "items": {}
                    },
                    "is_visible": {
                        "type": "boolean"
                    },
                    "applicant_visibility": {
                        "type": "string"
                    },
                    "account_access_enabled": {
                        "type": "boolean"
                    },
                    "sort_order": {
                        "type": "integer"
                    },
                    "level": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "CategoriesInput": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "description": "Kategoriename (erforderlich)"
                    },
                    "category_key": {
                        "type": "string",
                        "description": "Eindeutiger Schlüssel: Kleinbuchstaben, Ziffern, \"_\" und \"-\", max. 100 Zeichen (wird automatisch generiert, wenn nicht angegeben). Bei einer Änderung per PUT/PATCH werden alle Verweise (Formulare, Bereiche, Felder, Dienstleistungen usw.) auf den neuen Schlüssel umgestellt; beim Löschen wird der Schlüssel aus diesen Einschränkungen entfernt (ein Datensatz ohne verbleibende Kategorie gilt danach für alle Kategorien). Ein bereits vergebener Schlüssel ergibt 422"
                    },
                    "parent_category_id": {
                        "type": "integer",
                        "description": "Übergeordnete Kategorie-ID für Verschachtelung"
                    },
                    "content": {
                        "type": "string",
                        "description": "Kategoriebeschreibung oder Inhalt"
                    },
                    "event_keys": {
                        "type": "array",
                        "items": {},
                        "description": "Array von Event-Schlüsseln zur Zuordnung"
                    },
                    "is_visible": {
                        "type": "boolean",
                        "description": "Ob die Kategorie sichtbar ist (Standard: true)"
                    },
                    "applicant_visibility": {
                        "type": "string",
                        "description": "Sichtbarkeit für Bewerber (selectable, container, admin_only)"
                    },
                    "account_access_enabled": {
                        "type": "boolean",
                        "description": "Ob die Kategorie im Benutzerportal verfügbar ist (Standard: true)"
                    },
                    "sort_order": {
                        "type": "integer",
                        "description": "Anzeigereihenfolge (Standard: 0)"
                    }
                }
            },
            "CategoriesCreateInput": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "description": "Kategoriename (erforderlich)"
                    },
                    "category_key": {
                        "type": "string",
                        "description": "Eindeutiger Schlüssel: Kleinbuchstaben, Ziffern, \"_\" und \"-\", max. 100 Zeichen (wird automatisch generiert, wenn nicht angegeben). Bei einer Änderung per PUT/PATCH werden alle Verweise (Formulare, Bereiche, Felder, Dienstleistungen usw.) auf den neuen Schlüssel umgestellt; beim Löschen wird der Schlüssel aus diesen Einschränkungen entfernt (ein Datensatz ohne verbleibende Kategorie gilt danach für alle Kategorien). Ein bereits vergebener Schlüssel ergibt 422"
                    },
                    "parent_category_id": {
                        "type": "integer",
                        "description": "Übergeordnete Kategorie-ID für Verschachtelung"
                    },
                    "content": {
                        "type": "string",
                        "description": "Kategoriebeschreibung oder Inhalt"
                    },
                    "event_keys": {
                        "type": "array",
                        "items": {},
                        "description": "Array von Event-Schlüsseln zur Zuordnung"
                    },
                    "is_visible": {
                        "type": "boolean",
                        "description": "Ob die Kategorie sichtbar ist (Standard: true)"
                    },
                    "applicant_visibility": {
                        "type": "string",
                        "description": "Sichtbarkeit für Bewerber (selectable, container, admin_only)"
                    },
                    "account_access_enabled": {
                        "type": "boolean",
                        "description": "Ob die Kategorie im Benutzerportal verfügbar ist (Standard: true)"
                    },
                    "sort_order": {
                        "type": "integer",
                        "description": "Anzeigereihenfolge (Standard: 0)"
                    }
                },
                "required": [
                    "title"
                ]
            },
            "Invoices": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "invoice_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "display_number": {
                        "type": "string"
                    },
                    "invoice_type": {
                        "type": "string"
                    },
                    "related_invoice_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "event_participant_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "contact_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "invoice_date": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "issued_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "total": {
                        "type": "number"
                    },
                    "currency": {
                        "type": "string"
                    },
                    "credited_amount": {
                        "type": "number"
                    },
                    "paid_amount": {
                        "type": "number"
                    },
                    "written_off_amount": {
                        "type": "number"
                    },
                    "open_amount": {
                        "type": "number"
                    },
                    "service_date": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "due_date": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "is_reverse_charge": {
                        "type": "boolean"
                    },
                    "is_locked": {
                        "type": "boolean"
                    },
                    "locked_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "sent_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "reminder_sent_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "reminder_count": {
                        "type": "integer"
                    },
                    "cancellation_reason": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "e_invoice_format": {
                        "type": "string"
                    },
                    "e_invoice_status": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "leitweg_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "buyer_reference": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "po_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "links": {
                        "type": "object"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "InvoicesInput": {
                "type": "object",
                "properties": {
                    "event_participant_id": {
                        "type": "integer",
                        "description": "Anlegen: abzurechnende Teilnahme (event_participant_id oder contact_id)"
                    },
                    "contact_id": {
                        "type": "integer",
                        "description": "Anlegen: Kontakt, der ohne Event abgerechnet wird"
                    },
                    "items": {
                        "type": "array",
                        "items": {},
                        "description": "Anlegen: Positionen [{\"description\", \"quantity\" (Standard 1), \"unit_price\" (netto), \"tax_rate\" (einer Ihrer Rechnungs-Steuersätze, Standard der höchste)}]"
                    },
                    "include_billable_items": {
                        "type": "boolean",
                        "description": "Anlegen: offene abrechenbare Leistungen der Teilnahme übernehmen (Stand, Bestellungen, Dokumente). Standard: true, wenn keine items angegeben sind"
                    },
                    "billable_item_ids": {
                        "type": "array",
                        "items": {},
                        "description": "Anlegen: nur diese offenen abrechenbaren Leistungen"
                    },
                    "due_date": {
                        "type": "string",
                        "description": "Fälligkeitsdatum (JJJJ-MM-TT oder ISO 8601). Standard beim Anlegen: Rechnungsdatum + Zahlungsziel"
                    },
                    "service_date": {
                        "type": "string",
                        "description": "Anlegen: Leistungsdatum (JJJJ-MM-TT; Standard: Eventbeginn)"
                    },
                    "is_reverse_charge": {
                        "type": "boolean",
                        "description": "Anlegen: Reverse Charge (0 % USt; nur für EU-Kunden mit ausländischer USt-IdNr.)"
                    },
                    "e_invoice_format": {
                        "type": "string",
                        "description": "Anlegen: none, xrechnung oder zugferd"
                    },
                    "leitweg_id": {
                        "type": "string",
                        "description": "Anlegen: Leitweg-ID für öffentliche Auftraggeber (XRechnung)"
                    },
                    "buyer_reference": {
                        "type": "string",
                        "description": "Anlegen: Käuferreferenz (BT-10), wenn keine Leitweg-ID vorliegt"
                    },
                    "issue": {
                        "type": "boolean",
                        "description": "Anlegen: Rechnung sofort stellen (Nummer + Rechnungsdatum)"
                    },
                    "invoice_date": {
                        "type": "string",
                        "description": "Anlegen mit issue / POST issue: Rechnungsdatum (JJJJ-MM-TT, Standard heute)"
                    },
                    "send": {
                        "type": "boolean",
                        "description": "Anlegen: Rechnung sofort stellen und per E-Mail senden (an die Rechnungs-E-Mail oder \"send_to\")"
                    },
                    "status": {
                        "type": "string",
                        "description": "Nur PATCH: \"sent\" stellt einen Entwurf, \"cancelled\" storniert die Rechnung. Zahlungsstatus (paid, partially_paid, overdue, refunded) können nicht gesetzt werden (422)"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Interne Notizen zur Rechnung"
                    },
                    "reason": {
                        "type": "string",
                        "description": "POST cancel: Stornogrund (Pflicht bei gestellten Rechnungen)"
                    },
                    "to": {
                        "type": [
                            "string",
                            "array"
                        ],
                        "items": {},
                        "description": "POST send: Empfängeradresse(n); Standard die Rechnungs-E-Mail des Kunden. Außerdem cc, bcc, subject, attach_xml"
                    },
                    "message": {
                        "type": "string",
                        "description": "POST send: persönlicher Text, der nach der Anrede eingefügt wird"
                    }
                }
            },
            "InvoicesCreateInput": {
                "type": "object",
                "properties": {
                    "event_participant_id": {
                        "type": "integer",
                        "description": "Anlegen: abzurechnende Teilnahme (event_participant_id oder contact_id)"
                    },
                    "contact_id": {
                        "type": "integer",
                        "description": "Anlegen: Kontakt, der ohne Event abgerechnet wird"
                    },
                    "items": {
                        "type": "array",
                        "items": {},
                        "description": "Anlegen: Positionen [{\"description\", \"quantity\" (Standard 1), \"unit_price\" (netto), \"tax_rate\" (einer Ihrer Rechnungs-Steuersätze, Standard der höchste)}]"
                    },
                    "include_billable_items": {
                        "type": "boolean",
                        "description": "Anlegen: offene abrechenbare Leistungen der Teilnahme übernehmen (Stand, Bestellungen, Dokumente). Standard: true, wenn keine items angegeben sind"
                    },
                    "billable_item_ids": {
                        "type": "array",
                        "items": {},
                        "description": "Anlegen: nur diese offenen abrechenbaren Leistungen"
                    },
                    "due_date": {
                        "type": "string",
                        "description": "Fälligkeitsdatum (JJJJ-MM-TT oder ISO 8601). Standard beim Anlegen: Rechnungsdatum + Zahlungsziel"
                    },
                    "service_date": {
                        "type": "string",
                        "description": "Anlegen: Leistungsdatum (JJJJ-MM-TT; Standard: Eventbeginn)"
                    },
                    "is_reverse_charge": {
                        "type": "boolean",
                        "description": "Anlegen: Reverse Charge (0 % USt; nur für EU-Kunden mit ausländischer USt-IdNr.)"
                    },
                    "e_invoice_format": {
                        "type": "string",
                        "description": "Anlegen: none, xrechnung oder zugferd"
                    },
                    "leitweg_id": {
                        "type": "string",
                        "description": "Anlegen: Leitweg-ID für öffentliche Auftraggeber (XRechnung)"
                    },
                    "buyer_reference": {
                        "type": "string",
                        "description": "Anlegen: Käuferreferenz (BT-10), wenn keine Leitweg-ID vorliegt"
                    },
                    "issue": {
                        "type": "boolean",
                        "description": "Anlegen: Rechnung sofort stellen (Nummer + Rechnungsdatum)"
                    },
                    "invoice_date": {
                        "type": "string",
                        "description": "Anlegen mit issue / POST issue: Rechnungsdatum (JJJJ-MM-TT, Standard heute)"
                    },
                    "send": {
                        "type": "boolean",
                        "description": "Anlegen: Rechnung sofort stellen und per E-Mail senden (an die Rechnungs-E-Mail oder \"send_to\")"
                    },
                    "status": {
                        "type": "string",
                        "description": "Nur PATCH: \"sent\" stellt einen Entwurf, \"cancelled\" storniert die Rechnung. Zahlungsstatus (paid, partially_paid, overdue, refunded) können nicht gesetzt werden (422)"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Interne Notizen zur Rechnung"
                    },
                    "reason": {
                        "type": "string",
                        "description": "POST cancel: Stornogrund (Pflicht bei gestellten Rechnungen)"
                    },
                    "to": {
                        "type": [
                            "string",
                            "array"
                        ],
                        "items": {},
                        "description": "POST send: Empfängeradresse(n); Standard die Rechnungs-E-Mail des Kunden. Außerdem cc, bcc, subject, attach_xml"
                    },
                    "message": {
                        "type": "string",
                        "description": "POST send: persönlicher Text, der nach der Anrede eingefügt wird"
                    }
                }
            },
            "CreditNotes": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "invoice_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "display_number": {
                        "type": "string"
                    },
                    "invoice_type": {
                        "type": "string"
                    },
                    "related_invoice_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "event_participant_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "contact_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "invoice_date": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "issued_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "total": {
                        "type": "number"
                    },
                    "currency": {
                        "type": "string"
                    },
                    "credited_amount": {
                        "type": "number"
                    },
                    "paid_amount": {
                        "type": "number"
                    },
                    "written_off_amount": {
                        "type": "number"
                    },
                    "open_amount": {
                        "type": "number"
                    },
                    "service_date": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "due_date": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "is_reverse_charge": {
                        "type": "boolean"
                    },
                    "is_locked": {
                        "type": "boolean"
                    },
                    "locked_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "sent_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "reminder_sent_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "reminder_count": {
                        "type": "integer"
                    },
                    "cancellation_reason": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "e_invoice_format": {
                        "type": "string"
                    },
                    "e_invoice_status": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "leitweg_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "buyer_reference": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "po_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "links": {
                        "type": "object"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "Refunds": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": [
                            "integer",
                            "string"
                        ]
                    },
                    "source": {
                        "type": "string"
                    },
                    "payment_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "invoice_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "invoice_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "amount": {
                        "type": "number"
                    },
                    "currency": {
                        "type": "string"
                    },
                    "reason": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "gateway": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "gateway_refund_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "processed_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "PaymentReminders": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "invoice_id": {
                        "type": "integer"
                    },
                    "invoice_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "invoice_status": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "event_participant_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "contact_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "reminder_type": {
                        "type": "string"
                    },
                    "reminder_type_label": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "level": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "fee_amount": {
                        "type": "number"
                    },
                    "currency": {
                        "type": "string"
                    },
                    "due_date": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "dunning_stopped": {
                        "type": "boolean"
                    },
                    "sent_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "sent_to": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "sent_via": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "subject": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "template_key": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "show only"
                    },
                    "message_preview": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "show only"
                    }
                },
                "additionalProperties": true
            },
            "Payments": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "invoice_id": {
                        "type": "integer"
                    },
                    "amount": {
                        "type": "number"
                    },
                    "currency": {
                        "type": "string"
                    },
                    "gateway_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "gateway_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "gateway_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "transaction_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "gateway_fee": {
                        "type": "number"
                    },
                    "net_amount": {
                        "type": "number"
                    },
                    "status": {
                        "type": "string"
                    },
                    "payment_date": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "PaymentsInput": {
                "type": "object",
                "properties": {
                    "invoice_number": {
                        "type": "string",
                        "description": "Rechnungsnummer zur Zuordnung (erforderlich)"
                    },
                    "amount": {
                        "type": "number",
                        "description": "Zahlungsbetrag (erforderlich, muss positiv sein)"
                    },
                    "currency": {
                        "type": "string",
                        "description": "Währungscode (Standard: Rechnungswährung oder EUR)"
                    },
                    "status": {
                        "type": "string",
                        "description": "Zahlungsstatus (Standard: completed)"
                    },
                    "payment_date": {
                        "type": "string",
                        "description": "Zahlungsdatum (ISO 8601 Format, Standard: jetzt)"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Interne Notizen zur Zahlung"
                    },
                    "gateway_key": {
                        "type": "string",
                        "description": "Zahlungsgateway-Kennung"
                    },
                    "transaction_id": {
                        "type": "string",
                        "description": "Externe Transaktions-ID"
                    }
                }
            },
            "PaymentsCreateInput": {
                "type": "object",
                "properties": {
                    "invoice_number": {
                        "type": "string",
                        "description": "Rechnungsnummer zur Zuordnung (erforderlich)"
                    },
                    "amount": {
                        "type": "number",
                        "description": "Zahlungsbetrag (erforderlich, muss positiv sein)"
                    },
                    "currency": {
                        "type": "string",
                        "description": "Währungscode (Standard: Rechnungswährung oder EUR)"
                    },
                    "status": {
                        "type": "string",
                        "description": "Zahlungsstatus (Standard: completed)"
                    },
                    "payment_date": {
                        "type": "string",
                        "description": "Zahlungsdatum (ISO 8601 Format, Standard: jetzt)"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Interne Notizen zur Zahlung"
                    },
                    "gateway_key": {
                        "type": "string",
                        "description": "Zahlungsgateway-Kennung"
                    },
                    "transaction_id": {
                        "type": "string",
                        "description": "Externe Transaktions-ID"
                    }
                },
                "required": [
                    "invoice_number",
                    "amount"
                ]
            },
            "Booths": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "plan_id": {
                        "type": "integer"
                    },
                    "plan_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "event_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "event_title": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "booth_type_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "booth_type_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "booth_type_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "booth_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "booth_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "dimensions": {
                        "type": "object"
                    },
                    "position": {
                        "type": "object"
                    },
                    "formula_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "fixed_price": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "tax_rate": {
                        "type": "number"
                    },
                    "status": {
                        "type": "string"
                    },
                    "blocked_reason": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "color": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "amenities": {
                        "type": "array",
                        "items": {}
                    },
                    "reservation": {
                        "type": [
                            "object",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "BoothsInput": {
                "type": "object",
                "properties": {
                    "plan_id": {
                        "type": "integer",
                        "description": "Lageplan-ID (erforderlich)"
                    },
                    "booth_type_id": {
                        "type": "integer",
                        "description": "Standtyp-ID"
                    },
                    "booth_number": {
                        "type": "string",
                        "description": "Standnummer (wird automatisch generiert, wenn nicht angegeben)"
                    },
                    "booth_name": {
                        "type": "string",
                        "description": "Anzeigename des Stands"
                    },
                    "description": {
                        "type": "string",
                        "description": "Standbeschreibung"
                    },
                    "width": {
                        "type": "number",
                        "description": "Standbreite in Metern (Standard: 3,00)"
                    },
                    "depth": {
                        "type": "number",
                        "description": "Standtiefe in Metern (Standard: 3,00)"
                    },
                    "pos_x": {
                        "type": "number",
                        "description": "X-Position auf dem Lageplan (Standard: 0,00)"
                    },
                    "pos_y": {
                        "type": "number",
                        "description": "Y-Position auf dem Lageplan (Standard: 0,00)"
                    },
                    "rotation": {
                        "type": "integer",
                        "description": "Drehwinkel in Grad (Standard: 0)"
                    },
                    "formula_id": {
                        "type": "integer",
                        "description": "Preisformel-ID"
                    },
                    "fixed_price": {
                        "type": "number",
                        "description": "Festpreisüberschreibung"
                    },
                    "tax_rate": {
                        "type": "number",
                        "description": "Steuersatz in Prozent (Standard: Systemstandard)"
                    },
                    "status": {
                        "type": "string",
                        "description": "Standstatus (available, reserved, sold, blocked)"
                    },
                    "blocked_reason": {
                        "type": "string",
                        "description": "Grund für die Sperrung des Stands"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Interne Notizen"
                    },
                    "amenities": {
                        "type": "array",
                        "items": {},
                        "description": "Liste der Ausstattungsmerkmale, z. B. [\"WLAN\", \"Strom\"] (eine kommagetrennte Zeichenkette wird ebenfalls akzeptiert). Weglassen behält die aktuelle Liste, null oder [] leert sie"
                    }
                }
            },
            "BoothsCreateInput": {
                "type": "object",
                "properties": {
                    "plan_id": {
                        "type": "integer",
                        "description": "Lageplan-ID (erforderlich)"
                    },
                    "booth_type_id": {
                        "type": "integer",
                        "description": "Standtyp-ID"
                    },
                    "booth_number": {
                        "type": "string",
                        "description": "Standnummer (wird automatisch generiert, wenn nicht angegeben)"
                    },
                    "booth_name": {
                        "type": "string",
                        "description": "Anzeigename des Stands"
                    },
                    "description": {
                        "type": "string",
                        "description": "Standbeschreibung"
                    },
                    "width": {
                        "type": "number",
                        "description": "Standbreite in Metern (Standard: 3,00)"
                    },
                    "depth": {
                        "type": "number",
                        "description": "Standtiefe in Metern (Standard: 3,00)"
                    },
                    "pos_x": {
                        "type": "number",
                        "description": "X-Position auf dem Lageplan (Standard: 0,00)"
                    },
                    "pos_y": {
                        "type": "number",
                        "description": "Y-Position auf dem Lageplan (Standard: 0,00)"
                    },
                    "rotation": {
                        "type": "integer",
                        "description": "Drehwinkel in Grad (Standard: 0)"
                    },
                    "formula_id": {
                        "type": "integer",
                        "description": "Preisformel-ID"
                    },
                    "fixed_price": {
                        "type": "number",
                        "description": "Festpreisüberschreibung"
                    },
                    "tax_rate": {
                        "type": "number",
                        "description": "Steuersatz in Prozent (Standard: Systemstandard)"
                    },
                    "status": {
                        "type": "string",
                        "description": "Standstatus (available, reserved, sold, blocked)"
                    },
                    "blocked_reason": {
                        "type": "string",
                        "description": "Grund für die Sperrung des Stands"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Interne Notizen"
                    },
                    "amenities": {
                        "type": "array",
                        "items": {},
                        "description": "Liste der Ausstattungsmerkmale, z. B. [\"WLAN\", \"Strom\"] (eine kommagetrennte Zeichenkette wird ebenfalls akzeptiert). Weglassen behält die aktuelle Liste, null oder [] leert sie"
                    }
                },
                "required": [
                    "plan_id"
                ]
            },
            "BoothReservations": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "booth_id": {
                        "type": "integer"
                    },
                    "event_participant_id": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "string"
                    },
                    "reserved_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "confirmed_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cancelled_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cancellation_reason": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "final_price": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "price_breakdown": {
                        "type": [
                            "object",
                            "null"
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_by": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "BoothReservationsInput": {
                "type": "object",
                "properties": {
                    "booth_id": {
                        "type": "integer",
                        "description": "Stand-ID zur Reservierung (erforderlich; der Stand muss verfügbar sein)"
                    },
                    "event_participant_id": {
                        "type": "integer",
                        "description": "Teilnehmer-ID für die Reservierung (erforderlich)"
                    },
                    "status": {
                        "type": "string",
                        "description": "Reservierungsstatus. Beim Anlegen: pending (Standard) oder confirmed. Beim Aktualisieren: pending → confirmed/cancelled, confirmed → cancelled"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Interne Notizen"
                    },
                    "final_price": {
                        "type": "number",
                        "description": "Endgültiger verhandelter Preis"
                    },
                    "cancellation_reason": {
                        "type": "string",
                        "description": "Grund für die Stornierung (beim Aktualisieren des Status auf cancelled)"
                    }
                }
            },
            "BoothReservationsCreateInput": {
                "type": "object",
                "properties": {
                    "booth_id": {
                        "type": "integer",
                        "description": "Stand-ID zur Reservierung (erforderlich; der Stand muss verfügbar sein)"
                    },
                    "event_participant_id": {
                        "type": "integer",
                        "description": "Teilnehmer-ID für die Reservierung (erforderlich)"
                    },
                    "status": {
                        "type": "string",
                        "description": "Reservierungsstatus. Beim Anlegen: pending (Standard) oder confirmed. Beim Aktualisieren: pending → confirmed/cancelled, confirmed → cancelled"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Interne Notizen"
                    },
                    "final_price": {
                        "type": "number",
                        "description": "Endgültiger verhandelter Preis"
                    },
                    "cancellation_reason": {
                        "type": "string",
                        "description": "Grund für die Stornierung (beim Aktualisieren des Status auf cancelled)"
                    }
                },
                "required": [
                    "booth_id",
                    "event_participant_id"
                ]
            },
            "BoothTypes": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "booth_type_key": {
                        "type": "string"
                    },
                    "booth_type_name": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "default_width": {
                        "type": "number"
                    },
                    "default_depth": {
                        "type": "number"
                    },
                    "min_width": {
                        "type": "number"
                    },
                    "max_width": {
                        "type": "number"
                    },
                    "min_depth": {
                        "type": "number"
                    },
                    "max_depth": {
                        "type": "number"
                    },
                    "color": {
                        "type": "string"
                    },
                    "category_keys": {
                        "type": "array",
                        "items": {}
                    },
                    "event_keys": {
                        "type": "array",
                        "items": {}
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "sort_order": {
                        "type": "integer"
                    },
                    "booth_count": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "BoothTypesInput": {
                "type": "object",
                "properties": {
                    "booth_type_name": {
                        "type": "string",
                        "description": "Name für Admins und Aussteller (2–255 Zeichen)"
                    },
                    "booth_type_key": {
                        "type": "string",
                        "description": "Eindeutiger Schlüssel (Kleinbuchstaben, Ziffern, \"_\" und \"-\"); ohne Angabe aus dem Namen erzeugt"
                    },
                    "description": {
                        "type": "string",
                        "description": "Kurzbeschreibung (z. B. \"eine offene Seite\")"
                    },
                    "default_width": {
                        "type": "number",
                        "description": "Standardbreite in Metern (Standard 3)"
                    },
                    "default_depth": {
                        "type": "number",
                        "description": "Standardtiefe in Metern (Standard 3)"
                    },
                    "min_width": {
                        "type": "number",
                        "description": "Erlaubter Bereich in Metern (min_width/max_width, min_depth/max_depth; Standard 1 bis 20)"
                    },
                    "max_width": {
                        "type": "number",
                        "description": "Erlaubter Bereich in Metern (min_width/max_width, min_depth/max_depth; Standard 1 bis 20)"
                    },
                    "min_depth": {
                        "type": "number",
                        "description": "Erlaubter Bereich in Metern (min_width/max_width, min_depth/max_depth; Standard 1 bis 20)"
                    },
                    "max_depth": {
                        "type": "number",
                        "description": "Erlaubter Bereich in Metern (min_width/max_width, min_depth/max_depth; Standard 1 bis 20)"
                    },
                    "color": {
                        "type": "string",
                        "description": "Farbe im Lageplan (Hex, z. B. #3B82F6)"
                    },
                    "category_keys": {
                        "type": "array",
                        "items": {},
                        "description": "Nur für diese Ausstellerkategorien (leer = alle)"
                    },
                    "event_keys": {
                        "type": "array",
                        "items": {},
                        "description": "Nur für diese Events (leer = alle)"
                    },
                    "is_active": {
                        "type": "boolean",
                        "description": "Ob der Typ für neue Stände verwendet werden kann"
                    }
                }
            },
            "BoothTypesCreateInput": {
                "type": "object",
                "properties": {
                    "booth_type_name": {
                        "type": "string",
                        "description": "Name für Admins und Aussteller (2–255 Zeichen)"
                    },
                    "booth_type_key": {
                        "type": "string",
                        "description": "Eindeutiger Schlüssel (Kleinbuchstaben, Ziffern, \"_\" und \"-\"); ohne Angabe aus dem Namen erzeugt"
                    },
                    "description": {
                        "type": "string",
                        "description": "Kurzbeschreibung (z. B. \"eine offene Seite\")"
                    },
                    "default_width": {
                        "type": "number",
                        "description": "Standardbreite in Metern (Standard 3)"
                    },
                    "default_depth": {
                        "type": "number",
                        "description": "Standardtiefe in Metern (Standard 3)"
                    },
                    "min_width": {
                        "type": "number",
                        "description": "Erlaubter Bereich in Metern (min_width/max_width, min_depth/max_depth; Standard 1 bis 20)"
                    },
                    "max_width": {
                        "type": "number",
                        "description": "Erlaubter Bereich in Metern (min_width/max_width, min_depth/max_depth; Standard 1 bis 20)"
                    },
                    "min_depth": {
                        "type": "number",
                        "description": "Erlaubter Bereich in Metern (min_width/max_width, min_depth/max_depth; Standard 1 bis 20)"
                    },
                    "max_depth": {
                        "type": "number",
                        "description": "Erlaubter Bereich in Metern (min_width/max_width, min_depth/max_depth; Standard 1 bis 20)"
                    },
                    "color": {
                        "type": "string",
                        "description": "Farbe im Lageplan (Hex, z. B. #3B82F6)"
                    },
                    "category_keys": {
                        "type": "array",
                        "items": {},
                        "description": "Nur für diese Ausstellerkategorien (leer = alle)"
                    },
                    "event_keys": {
                        "type": "array",
                        "items": {},
                        "description": "Nur für diese Events (leer = alle)"
                    },
                    "is_active": {
                        "type": "boolean",
                        "description": "Ob der Typ für neue Stände verwendet werden kann"
                    }
                },
                "required": [
                    "booth_type_name"
                ]
            },
            "CheckIns": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "event_participant_id": {
                        "type": "integer"
                    },
                    "event_id": {
                        "type": "integer"
                    },
                    "event_title": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "event_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "contact": {
                        "type": "object"
                    },
                    "check_in_type": {
                        "type": "string"
                    },
                    "badge_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "station": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "checked_in_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "checked_out_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "is_checked_in": {
                        "type": "boolean"
                    },
                    "checked_in_by": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "additionalProperties": true
            },
            "CheckInsCreateInput": {
                "type": "object",
                "properties": {
                    "event_key": {
                        "type": "string",
                        "description": "Event-Schlüssel (erforderlich)"
                    },
                    "participant_id": {
                        "type": "integer",
                        "description": "Teilnehmer-ID (erforderlich wenn keine badge_number)"
                    },
                    "badge_number": {
                        "type": "string",
                        "description": "Badge-Nummer (erforderlich wenn keine participant_id)"
                    },
                    "action": {
                        "type": "string",
                        "description": "Auszuführende Aktion (check_in oder check_out, Standard: check_in)"
                    },
                    "check_in_type": {
                        "type": "string",
                        "description": "Check-In-Methode (manual, scan, app)"
                    },
                    "station": {
                        "type": "string",
                        "description": "Check-In-Station-Kennung"
                    },
                    "notes": {
                        "type": "string",
                        "description": "Check-In-Notizen"
                    }
                },
                "required": [
                    "event_key"
                ]
            },
            "Tasks": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "entity_type": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "entity_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "assigned_to": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "assigned_to_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_by": {
                        "type": "integer"
                    },
                    "created_by_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "due_date": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "priority": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "completed_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "completed_by": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "TasksInput": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "description": "Titel der Aufgabe"
                    },
                    "description": {
                        "type": "string",
                        "description": "Beschreibung der Aufgabe"
                    },
                    "status": {
                        "type": "string",
                        "description": "Status (pending, in_progress, completed, cancelled)"
                    },
                    "priority": {
                        "type": "string",
                        "description": "Priorität (urgent, high, normal, low)"
                    },
                    "due_date": {
                        "type": "string",
                        "description": "Fälligkeitsdatum (ISO 8601 Format)"
                    },
                    "assigned_to": {
                        "type": "integer",
                        "description": "ID des zugewiesenen Administrators"
                    },
                    "entity_type": {
                        "type": "string",
                        "description": "Verknüpfter Entitätstyp (event, contact, application, etc.)"
                    },
                    "entity_id": {
                        "type": "integer",
                        "description": "ID der verknüpften Entität"
                    }
                }
            },
            "TasksCreateInput": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "description": "Titel der Aufgabe"
                    },
                    "description": {
                        "type": "string",
                        "description": "Beschreibung der Aufgabe"
                    },
                    "status": {
                        "type": "string",
                        "description": "Status (pending, in_progress, completed, cancelled)"
                    },
                    "priority": {
                        "type": "string",
                        "description": "Priorität (urgent, high, normal, low)"
                    },
                    "due_date": {
                        "type": "string",
                        "description": "Fälligkeitsdatum (ISO 8601 Format)"
                    },
                    "assigned_to": {
                        "type": "integer",
                        "description": "ID des zugewiesenen Administrators"
                    },
                    "entity_type": {
                        "type": "string",
                        "description": "Verknüpfter Entitätstyp (event, contact, application, etc.)"
                    },
                    "entity_id": {
                        "type": "integer",
                        "description": "ID der verknüpften Entität"
                    }
                },
                "required": [
                    "title"
                ]
            },
            "Documents": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "category_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "category_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "document_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "entity_type": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "entity_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "template_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "content": {
                        "type": "string"
                    },
                    "metadata": {
                        "type": [
                            "object",
                            "null"
                        ]
                    },
                    "esign_status": {
                        "type": "string"
                    },
                    "is_contract": {
                        "type": "boolean"
                    },
                    "contract_status": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "DocumentsInput": {
                "type": "object",
                "properties": {
                    "content": {
                        "type": "string",
                        "description": "Neuer Inhalt als HTML (nicht erlaubte Elemente wie Skripte werden entfernt; leerer Inhalt: 422). Nur bei nicht gesperrten Dokumenten"
                    },
                    "metadata": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "Zusatzdaten als JSON-Objekt (höchstens 64 KB); null entfernt sie. Nur bei nicht gesperrten Dokumenten"
                    },
                    "contract_status": {
                        "type": "string",
                        "description": "Vertragsstatus (draft, pending_signature, active, terminated); nur bei Verträgen. Bei gesperrten Verträgen nur die erlaubten Schritte, die Antwort 409 nennt sie in \"allowed\""
                    }
                }
            },
            "DocumentsCreateInput": {
                "type": "object",
                "properties": {
                    "entity_type": {
                        "type": "string",
                        "description": "Entitätstyp für das Dokument (erforderlich; derzeit nur event_participant)"
                    },
                    "entity_id": {
                        "type": "integer",
                        "description": "Entitäts-ID für das Dokument (erforderlich; ein nicht vorhandener Datensatz ergibt 404)"
                    },
                    "template_id": {
                        "type": "integer",
                        "description": "Dokumentvorlagen-ID (erforderlich wenn keine category_id). Genau diese aktive Vorlage wird verwendet; wird zusätzlich category_id angegeben, muss die Vorlage zu dieser Kategorie gehören"
                    },
                    "category_id": {
                        "type": "integer",
                        "description": "Dokumentkategorie-ID (erforderlich wenn keine template_id). Ohne template_id wird die erste Vorlage gewählt, deren Bedingungen zutreffen, sonst die Standardvorlage"
                    },
                    "metadata": {
                        "type": "object",
                        "description": "Zusätzliche Metadaten als Schlüssel-Wert-Paare"
                    }
                },
                "required": [
                    "entity_type",
                    "entity_id"
                ]
            },
            "Submissions": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "event_submission_id": {
                        "type": "integer"
                    },
                    "event_participant_id": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "string"
                    },
                    "submitted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "value_text": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "value_file": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "reviewed_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "reviewed_by": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "reviewer_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "review_notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "revision_count": {
                        "type": "integer"
                    },
                    "is_late": {
                        "type": "boolean"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "type_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "type_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "additionalProperties": true
            },
            "SubmissionsInput": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string",
                        "description": "Neuer Status (approved, rejected oder revision_requested)"
                    },
                    "review_notes": {
                        "type": "string",
                        "description": "Prüfungsnotizen zur Statusänderung"
                    },
                    "notify": {
                        "type": "boolean",
                        "description": "true: der Aussteller erhält eine E-Mail zur Entscheidung (in seiner Sprache). Standard: false"
                    }
                }
            },
            "SubmissionsCreateInput": {
                "type": "object",
                "properties": {
                    "event_participant_id": {
                        "type": "integer",
                        "description": "ID der Teilnahme (Pflicht)"
                    },
                    "event_submission_id": {
                        "type": "integer",
                        "description": "ID der Anforderung der Veranstaltung (Pflicht; siehe GET /submission-types bzw. die Einreichungen der Veranstaltung)"
                    },
                    "file": {
                        "type": "string",
                        "format": "binary",
                        "description": "Die Datei (multipart/form-data, Pflicht bei Datei-Anforderungen; erlaubte Typen und Größe der Anforderung)"
                    },
                    "value": {
                        "type": [
                            "string",
                            "boolean"
                        ],
                        "description": "Antwort bei Text-, URL- oder Ja/Nein-Anforderungen (höchstens 10.000 Zeichen; URLs ohne Schema erhalten https://)"
                    },
                    "custom_fields": {
                        "type": "object",
                        "description": "Werte der Zusatzfelder des Einreichungsformulars als Objekt {feld_key: wert}; Prüfung wie im Formular"
                    }
                },
                "required": [
                    "event_participant_id",
                    "event_submission_id"
                ]
            },
            "ServiceOrders": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "order_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "event_participant_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "subtotal": {
                        "type": "number"
                    },
                    "tax_total": {
                        "type": "number"
                    },
                    "total": {
                        "type": "number"
                    },
                    "currency": {
                        "type": "string"
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "submitted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "confirmed_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cancelled_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cancellation_reason": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "ServiceOrdersInput": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string",
                        "description": "Neuer Status: confirmed, completed oder cancelled"
                    },
                    "cancellation_reason": {
                        "type": "string",
                        "description": "Begründung für den Aussteller beim Stornieren (optional)"
                    }
                }
            },
            "Plans": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "event_id": {
                        "type": "integer"
                    },
                    "event_title": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "plan_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "plan_name": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "area_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "width": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "height": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "background_image": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "floor_plan_svg": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "floor_plan_width": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "floor_plan_height": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "grid_size": {
                        "type": "integer"
                    },
                    "scale_factor": {
                        "type": "number"
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "sort_order": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "CustomFields": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "form_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "entity_type": {
                        "type": "string"
                    },
                    "field_key": {
                        "type": "string"
                    },
                    "field_label": {
                        "type": "string"
                    },
                    "field_type": {
                        "type": "string"
                    },
                    "section_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "field_options": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "validation_rules": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "is_required": {
                        "type": "boolean"
                    },
                    "is_searchable": {
                        "type": "boolean"
                    },
                    "applicant_visibility": {
                        "type": "string"
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "display_order": {
                        "type": "integer"
                    }
                },
                "additionalProperties": true
            },
            "CustomFieldsInput": {
                "type": "object",
                "properties": {}
            },
            "Services": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "category_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "category_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "service_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "service_name": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "short_description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "unit": {
                        "type": "string"
                    },
                    "unit_label": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "base_price": {
                        "type": "number"
                    },
                    "tax_rate": {
                        "type": "number"
                    },
                    "min_quantity": {
                        "type": "integer"
                    },
                    "max_quantity": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "quantity_step": {
                        "type": "integer"
                    },
                    "requires_specification": {
                        "type": "boolean"
                    },
                    "specification_label": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "specification_placeholder": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "lead_time_days": {
                        "type": "integer"
                    },
                    "image_filename": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "sort_order": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "ServiceCategories": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "category_key": {
                        "type": "string"
                    },
                    "category_name": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "color": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "sort_order": {
                        "type": "integer"
                    },
                    "service_count": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "EventServices": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "event_id": {
                        "type": "integer"
                    },
                    "service_id": {
                        "type": "integer"
                    },
                    "service_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "service_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "category_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "category_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "unit": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "base_price": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "price_override": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "early_bird_price": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "early_bird_deadline": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "early_bird_active": {
                        "type": "boolean"
                    },
                    "effective_price": {
                        "type": "number"
                    },
                    "tax_rate": {
                        "type": "number"
                    },
                    "order_deadline": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "max_quantity_per_participant": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "total_inventory": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "remaining_inventory": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "SubmissionTypes": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "type_key": {
                        "type": "string"
                    },
                    "type_name": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "input_type": {
                        "type": "string"
                    },
                    "custom_field_key": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "allowed_extensions": {
                        "type": "array",
                        "items": {}
                    },
                    "max_file_size_mb": {
                        "type": "integer"
                    },
                    "is_required": {
                        "type": "boolean"
                    },
                    "requires_approval": {
                        "type": "boolean"
                    },
                    "category_keys": {
                        "type": "array",
                        "items": {}
                    },
                    "help_text": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "example_url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "sort_order": {
                        "type": "integer"
                    },
                    "event_count": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "ListTemplates": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "template_key": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "parent_entity_type": {
                        "type": "string"
                    },
                    "category_keys": {
                        "type": "array",
                        "items": {}
                    },
                    "event_keys": {
                        "type": "array",
                        "items": {}
                    },
                    "exhibitor_access": {
                        "type": "string"
                    },
                    "min_entries": {
                        "type": "integer"
                    },
                    "max_entries": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "entry_count": {
                        "type": "integer"
                    },
                    "fields": {
                        "type": "array",
                        "items": {}
                    }
                },
                "additionalProperties": true
            },
            "ListEntries": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "template_id": {
                        "type": "integer"
                    },
                    "template_key": {
                        "type": "string"
                    },
                    "parent_entity_type": {
                        "type": "string"
                    },
                    "parent_entity_id": {
                        "type": "integer"
                    },
                    "values": {
                        "type": "object"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "ListEntriesInput": {
                "type": "object",
                "properties": {
                    "template_id": {
                        "type": "integer",
                        "description": "ID der Liste (oder template_key)"
                    },
                    "template_key": {
                        "type": "string",
                        "description": "Schlüssel der Liste (Alternative zu template_id)"
                    },
                    "parent_entity_type": {
                        "type": "string",
                        "description": "event_participant (Standard), event oder contact"
                    },
                    "parent_entity_id": {
                        "type": "integer",
                        "description": "ID des Teilnehmers, Events oder Kontakts, zu dem der Eintrag gehört"
                    },
                    "values": {
                        "type": "object",
                        "description": "Die Feldwerte als Objekt: {\"field_key\": Wert}. Auswahlfelder erwarten den Optionswert, Checkboxen true/false, Daten JJJJ-MM-TT, Anwesenheitsraster eine Liste von Daten. Bei PATCH ändern sich nur die angegebenen Felder."
                    }
                }
            },
            "ListEntriesCreateInput": {
                "type": "object",
                "properties": {
                    "template_id": {
                        "type": "integer",
                        "description": "ID der Liste (oder template_key)"
                    },
                    "template_key": {
                        "type": "string",
                        "description": "Schlüssel der Liste (Alternative zu template_id)"
                    },
                    "parent_entity_type": {
                        "type": "string",
                        "description": "event_participant (Standard), event oder contact"
                    },
                    "parent_entity_id": {
                        "type": "integer",
                        "description": "ID des Teilnehmers, Events oder Kontakts, zu dem der Eintrag gehört"
                    },
                    "values": {
                        "type": "object",
                        "description": "Die Feldwerte als Objekt: {\"field_key\": Wert}. Auswahlfelder erwarten den Optionswert, Checkboxen true/false, Daten JJJJ-MM-TT, Anwesenheitsraster eine Liste von Daten. Bei PATCH ändern sich nur die angegebenen Felder."
                    }
                },
                "required": [
                    "parent_entity_id",
                    "values"
                ]
            },
            "Newsletter": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "email": {
                        "type": "string"
                    },
                    "name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "contact_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "confirmed_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "unsubscribed_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "NewsletterCreateInput": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "description": "E-Mail-Adresse zum Abonnieren (erforderlich)"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name des Abonnenten"
                    },
                    "send_confirmation": {
                        "type": "boolean",
                        "description": "Ob die Double-Opt-in-Bestätigungs-E-Mail gesendet werden soll (Standard: true). Der Abonnent bleibt ausstehend, bis der Link in der E-Mail bestätigt wurde. false nur für Importe von Adressen verwenden, deren Einwilligung bereits anderweitig eingeholt wurde; false reaktiviert niemals eine abgemeldete Adresse (409)"
                    },
                    "language": {
                        "type": "string",
                        "description": "Sprache der Bestätigungs-E-Mail und des Links, z. B. de oder en (Standard: Standardsprache des Mandanten)"
                    },
                    "consent_ip": {
                        "type": "string",
                        "description": "IP-Adresse des Abonnenten, wenn Ihr System eine Anmeldung weiterleitet (wird als Einwilligungsnachweis gespeichert; Standard: IP des API-Clients)"
                    },
                    "consent_user_agent": {
                        "type": "string",
                        "description": "Browser-User-Agent des Abonnenten, wenn Ihr System eine Anmeldung weiterleitet (Standard: User-Agent des API-Clients)"
                    }
                },
                "required": [
                    "email"
                ]
            },
            "Notes": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "entity_type": {
                        "type": "string"
                    },
                    "entity_id": {
                        "type": "integer"
                    },
                    "admin_id": {
                        "type": "integer"
                    },
                    "admin_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "note_text": {
                        "type": "string"
                    },
                    "note_type": {
                        "type": "string"
                    },
                    "is_pinned": {
                        "type": "boolean"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "NotesInput": {
                "type": "object",
                "properties": {
                    "entity_type": {
                        "type": "string",
                        "description": "Entitätstyp (erforderlich: contact, application, event_participant, invoice, event)"
                    },
                    "entity_id": {
                        "type": "integer",
                        "description": "Entitäts-ID (erforderlich)"
                    },
                    "note_text": {
                        "type": "string",
                        "description": "Notizinhalt (erforderlich)"
                    },
                    "note_type": {
                        "type": "string",
                        "description": "Notiztyp (info, warning, followup, internal; Standard: info)"
                    },
                    "is_pinned": {
                        "type": "boolean",
                        "description": "Ob die Notiz angeheftet ist"
                    }
                }
            },
            "NotesCreateInput": {
                "type": "object",
                "properties": {
                    "entity_type": {
                        "type": "string",
                        "description": "Entitätstyp (erforderlich: contact, application, event_participant, invoice, event)"
                    },
                    "entity_id": {
                        "type": "integer",
                        "description": "Entitäts-ID (erforderlich)"
                    },
                    "note_text": {
                        "type": "string",
                        "description": "Notizinhalt (erforderlich)"
                    },
                    "note_type": {
                        "type": "string",
                        "description": "Notiztyp (info, warning, followup, internal; Standard: info)"
                    },
                    "is_pinned": {
                        "type": "boolean",
                        "description": "Ob die Notiz angeheftet ist"
                    }
                },
                "required": [
                    "entity_type",
                    "entity_id",
                    "note_text"
                ]
            },
            "Schedules": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "event_id": {
                        "type": "integer"
                    },
                    "event_title": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "slot_date": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "start_time": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "end_time": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "location": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "title": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "slot_type": {
                        "type": "string"
                    },
                    "is_public": {
                        "type": "boolean"
                    },
                    "show_in_public_agenda": {
                        "type": "boolean",
                        "description": "true = der Programmpunkt erscheint im öffentlichen Programm des Events"
                    },
                    "sort_order": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "Webhooks": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "url": {
                        "type": "string"
                    },
                    "events": {
                        "type": "array",
                        "items": {}
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "retry_count": {
                        "type": "integer"
                    },
                    "timeout_seconds": {
                        "type": "integer"
                    },
                    "last_triggered_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "last_success_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "last_failure_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "failure_count": {
                        "type": "integer"
                    },
                    "secret": {
                        "type": "string",
                        "description": "create/show only"
                    },
                    "created_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "WebhooksCreateInput": {
                "type": "object",
                "properties": {
                    "url": {
                        "type": "string",
                        "description": "URL des Webhook-Endpunkts (HTTPS erforderlich)"
                    },
                    "events": {
                        "type": "array",
                        "items": {},
                        "description": "Array von Event-Typen zum Abonnieren"
                    },
                    "name": {
                        "type": "string",
                        "description": "Anzeigename für den Webhook"
                    },
                    "is_active": {
                        "type": "boolean",
                        "description": "Ob der Webhook aktiv ist (Boolean, Standard: true)"
                    },
                    "headers": {
                        "type": "object",
                        "description": "Benutzerdefinierte HTTP-Header als Objekt aus \"Header-Name\": \"Wert\"-Paaren (max. 20; Namen nur A-Z, 0-9 und Bindestrich; keine Zeilenumbrüche in Werten; Host, Content-Type, Content-Length, Transfer-Encoding, Connection, User-Agent und X-Webhook-* können nicht überschrieben werden)"
                    },
                    "retry_count": {
                        "type": "integer",
                        "description": "Anzahl der Wiederholungsversuche bei Fehler, 0-10 (Standard: 3)"
                    },
                    "timeout_seconds": {
                        "type": "integer",
                        "description": "Zeitüberschreitung der Anfrage in Sekunden, 5-120 (Standard: 30)"
                    }
                },
                "required": [
                    "url",
                    "events"
                ]
            },
            "AuditLog": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "action": {
                        "type": "string"
                    },
                    "entity_type": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "entity_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "entity_title": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "old_values": {
                        "type": [
                            "object",
                            "null"
                        ]
                    },
                    "new_values": {
                        "type": [
                            "object",
                            "null"
                        ]
                    },
                    "admin_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "admin_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "ip_address": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "user_agent": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            }
        },
        "responses": {
            "BadRequest": {
                "description": "Die Anfrage ist fehlerhaft",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            },
            "Unauthorized": {
                "description": "API-Schlüssel fehlt, ist ungültig oder abgelaufen",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            },
            "Forbidden": {
                "description": "Dem API-Schlüssel fehlt die nötige Berechtigung, oder die Funktion ist nicht in Ihrem Paket enthalten",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            },
            "NotFound": {
                "description": "Datensatz nicht gefunden",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            },
            "ValidationFailed": {
                "description": "Prüfung fehlgeschlagen; errors nennt die Meldung pro Feld",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/ValidationError"
                        }
                    }
                }
            },
            "TooManyRequests": {
                "description": "Anfragelimit erreicht; bitte später erneut versuchen",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            }
        },
        "parameters": {
            "page": {
                "name": "page",
                "in": "query",
                "required": false,
                "description": "Seitennummer (beginnt bei 1)",
                "schema": {
                    "type": "integer",
                    "minimum": 1,
                    "default": 1
                }
            },
            "per_page": {
                "name": "per_page",
                "in": "query",
                "required": false,
                "description": "Einträge pro Seite (1 bis 100, Standard 25)",
                "schema": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100,
                    "default": 25
                }
            }
        }
    }
}